如何使用 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 . '%');
                });