我想要以下查询。
select * from `items`
where (`item_name` LIKE 'foo' or `item_description` LIKE 'foo')
and `item_type` = 'type1'
翻译成口才。我提出了以下声明:
$items = Item::where('item_type', '=', 'type1')
->orWhere('item_name','LIKE','%'.$q.'%')
->orWhere('item_description','LIKE','%'.$q.'%')
->sortable(['id' => 'desc'])
->paginate(10);
在以上代码段中,$q
将是foo
(这是一个搜索查询)。
问题在于,这并不能完全返回我想要的内容,因为它还会返回属于另一个item_type
而不是我的示例中的type1
的项目。
如何将上述SQL查询转换为口才查询,使其仅返回包含foo
且类型仅为Type1
的项目?
答案 0 :(得分:3)
尝试一下。您需要嵌套的where
闭包:
$items = Item::where('item_type', '=', 'type1')
->where(function($query) use ($q) {
$query->where('item_name','LIKE','%'.$q.'%')
->orWhere('item_description','LIKE','%'.$q.'%');
})
->sortable(['id' => 'desc'])
->paginate(10);