如何使用 laravel 查询生成器嵌套 WHERE 加 AND 条件?
How to nest WHERE plus AND conditions with laravel query builder?
我需要这样的东西:
public function myFunc(Request $request) {
$search = $request->input('searchString');
$myOjb = myModel::where('field1', 'like', '%' .$search . '%')
->orwhere('field2', 'like', '%' .$search . '%')
->orwhere('field3', 'like', '%' .$search . '%')
->orwhere('field4', 'like', '%' .$search . '%')
->where('field5','yes')
}
我需要将数据带到 like
中任何一个为真且字段 field5 = yes
必须是的地方。
问题是:即使找不到 field5
,它也会给我带来数据。
如何正确过滤?
没看懂:Advanced Wheres
你可以通过在 where()
上传递一个闭包来像下面那样做
myModel::where('field5', 'YES')->where(function ($q) use($search) {
^^^
return $q->where('field1', 'like', '%' .$search . '%')
->orwhere('field2', 'like', '%' .$search . '%')
->orwhere('field3', 'like', '%' .$search . '%')
->orwhere('field4', 'like', '%' .$search . '%');
});
编辑
您需要使用 use
将变量传递给闭包
这样试试,
$myOjb = myModel::where('field1', 'like', '%' .$search . '%')
->where('field5','yes')
->where(function ($query) {
$query->where('field2', 'like', '%' .$search . '%')
->orWhere('field3', 'like', '%' .$search . '%')
->orWhere('field4', 'like', '%' .$search . '%');
});
我需要这样的东西:
public function myFunc(Request $request) {
$search = $request->input('searchString');
$myOjb = myModel::where('field1', 'like', '%' .$search . '%')
->orwhere('field2', 'like', '%' .$search . '%')
->orwhere('field3', 'like', '%' .$search . '%')
->orwhere('field4', 'like', '%' .$search . '%')
->where('field5','yes')
}
我需要将数据带到 like
中任何一个为真且字段 field5 = yes
必须是的地方。
问题是:即使找不到 field5
,它也会给我带来数据。
如何正确过滤?
没看懂:Advanced Wheres
你可以通过在 where()
上传递一个闭包来像下面那样做myModel::where('field5', 'YES')->where(function ($q) use($search) {
^^^
return $q->where('field1', 'like', '%' .$search . '%')
->orwhere('field2', 'like', '%' .$search . '%')
->orwhere('field3', 'like', '%' .$search . '%')
->orwhere('field4', 'like', '%' .$search . '%');
});
编辑
您需要使用 use
这样试试,
$myOjb = myModel::where('field1', 'like', '%' .$search . '%')
->where('field5','yes')
->where(function ($query) {
$query->where('field2', 'like', '%' .$search . '%')
->orWhere('field3', 'like', '%' .$search . '%')
->orWhere('field4', 'like', '%' .$search . '%');
});