У меня есть Quote
Красноречистая модель, которая имеет несколько отношений, одна из которых - Customer
. Я пишу контроллер поиска, который берет запрос, а затем ищет модели. Если мне не нужно искать по пользовательским отношениям, я могу легко сделать это:Eloquent where clause on with table
$Quote = Quote::where('trashed', '0'); // Never get trashed items.
$Quote->where('item', 'LIKE', '%'.$searchQuery.'%');
Работает с удовольствием.
Однако, если я хочу, чтобы найти все цитаты, но по имени клиентов:
$Quote = Quote::where('trashed', '0'); // Never get trashed items.
$Quote = $Quote->with(['Customer' => function($Query) use ($searchQuery) {
$Query->where('e_mail', 'LIKE', '%'.$searchQuery.'%');
}]);
Все это делает, говоря «присоединиться к клиентам, которые имеют имя, как $searchQuery
Если я двигаю пункт where
. быть по методу with
, он не может получить доступ к e_mail
поля
Так как я искать цитаты, но там, где клиент равно что-то другое
Почти. Это возвращает клиентов, связанных только с кавычками, которые имеют соответствующую информацию. Мне нужны «Цитаты», чьи «Клиенты» имеют эти письма. – James
Я установил свой код таким образом: '$ Quote = Quote :: with (['Customer' => function ($ Query) use ($ searchQuery) { \t \t \t $ Query-> где ('e_mail ',' LIKE ','% '. $ SearchQuery.'% '); \t \t}]) -> где (' trashed ', 0) -> orderBy (' created_at ',' desc '); 'но это не выполнив часть 'e_mail'. – James