我有一个Quote
Eloquent模型,它有几个关系,其中一个是Customer
。我正在编写一个搜索控制器,它接受一个查询,然后搜索模型。如果我不需要搜索自定义关系,我可以轻松地执行此操作:
$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
字段。
那么如何搜索报价,但客户与其他东西相等呢?
答案 0 :(得分:0)
试试这个:
$Quote = Quote::with(['Customer' => function($Query) use ($searchQuery) {
$Query->where('e_mail', 'LIKE', '%'.$searchQuery.'%');
}])->where('trashed', '0')->where('item', 'LIKE', '%'.$searchQuery.'%');
答案 1 :(得分:0)
我设法使用whereHas
代替with
并使用查询来解决此问题。
$Quote = Quote::whereHas('customer', function($Query) use($searchQuery) {
$Query->where('e_mail', 'LIKE', '%'.$searchQuery.'%');
});
排序!