#php #laravel
#php #laravel
Вопрос:
У меня есть условные данные, и они игнорируют эти условия при возврате данных:
Работает нормально
$orders = Order::where('user_id', $user->id)->with(['customer', 'laundry', 'driver', 'driver.user', 'progresses' => function($p){
$p->orderby('created_at', 'asc');
}, 'progresses.progress', 'services'])->get();
Возвращает неправильные данные
$orders = Order::where('user_id', $user->id)->with(['customer', 'laundry', 'driver', 'driver.user', 'progresses' => function($p){
$p->orderby('created_at', 'asc');
}, 'progresses.progress', 'services'])
->where('id', 'like', '%'.$this->search.'%')
->orWhere('transport', 'like', '%'.$this->search.'%')
->orWhere('amount', 'like', '%'.$this->search.'%')
->orWhere('weight', 'like', '%'.$this->search.'%')
->orWhere('total', 'like', '%'.$this->search.'%')
->paginate(10);
Проблема
Второй запрос возвращает все orders
и игнорирует where('user_id', '=', $user->id)
.
Вопрос
- почему он игнорирует
where('user_id', '=', $user->id)
- Как это исправить?
Комментарии:
1. Как вы думаете, почему он игнорирует where(‘user_id’, ‘=’, $user->id)? Вы проверили SQL-запрос?
2. @Ricardinho TBH, если понятия не имеешь, почему 🙂 а ты? да, пожалуйста, скажите мне.
3. Я предполагаю
orWhere()
, что это компрометирует начальныйwhere()
Ответ №1:
Вы должны сгруппировать свой поисковый LIKE
запрос здесь
Order::with(
[
'customer',
'laundry',
'driver',
'driver.user',
'progresses' => function($p) {
$p->orderby('created_at', 'asc');
},
'progresses.progress',
'services'
]
)->where('user_id', $user->id)
->where(function($q) {
$q->where('id', 'like', '%'.$this->search.'%')
->orWhere('transport', 'like', '%'.$this->search.'%')
->orWhere('amount', 'like', '%'.$this->search.'%')
->orWhere('weight', 'like', '%'.$this->search.'%')
->orWhere('total', 'like', '%'.$this->search.'%');
})->paginate(10);
Таким образом, строка запроса выглядит следующим образом:
WHERE user_id = ?
AND
(id LIKE ? OR transport LIKE ? OR amount LIKE ? OR weight LIKE ? OR total LIKE ?)
Он будет игнорировать where('user_id', '=', $user->id)
из orWhere
-за вашего поискового LIKE
запроса
Комментарии:
1. Привет, я только что дважды проверил свои
where('user_id', '=', $user->id)
работы, но данные не представлены. :/2. что вы имеете в виду, говоря «вы не получили никаких результатов»?
3. извините, я нашел проблему: D