Php 在多个where查询生成器Laravel中使用orWhere

Php 在多个where查询生成器Laravel中使用orWhere,php,laravel,Php,Laravel,我想从数据库中选择4个条件,1个条件必须使用或。我写了这个查询生成器,它很有效。但我想知道我是否可以使用更短的查询。类似地,在where括号中使用3个条件,在orWhere括号中使用1个条件。这是我的疑问: $pads = DB::table('pads') ->join('languages', 'pads.language_id', '=', 'languages.id') ->select('pads.id', 'pads.title', 'pads.statu

我想从数据库中选择4个条件,1个条件必须使用或。我写了这个查询生成器,它很有效。但我想知道我是否可以使用更短的查询。类似地,在where括号中使用3个条件,在orWhere括号中使用1个条件。这是我的疑问:

$pads = DB::table('pads')
    ->join('languages', 'pads.language_id', '=', 'languages.id')
    ->select('pads.id', 'pads.title', 'pads.status', 'pads.people', 'pads.created_at', 'languages.name as language')
    ->where([
        ['pads.user_id', Auth::user()->id],
        ['pads.title', 'LIKE', "%{$request->search}%"],
        ['pads.status', $request->status],
        ['pads.language_id', $request->lg_id]
    ])
    ->orWhere([
        ['pads.user_id', Auth::user()->id],
        ['pads.people', 'LIKE', "%{$request->search}%"],
        ['pads.status', $request->status],
        ['pads.language_id', $request->lg_id]
    ])
    ->orderBy('created_at', 'desc')
    ->get();

您必须将条件分组到中或orWhere中,并使用函数作为参数

->where([
        ['pads.user_id', Auth::user()->id],
        ['pads.status', $request->status],
        ['pads.language_id', $request->lg_id]
    ])
->where(function ($query) use ($request) {
    $query->where('pads.title', 'LIKE', "%{$request->search}%")
          ->orWhere('pads.people', 'LIKE', "%{$request->search}%");
})
这将生成一个类似于的查询

其中pads.user_id=? 和pads.status=? 和pads.language_id=? 和 你喜欢什么? 或者,人们喜欢什么?
非常感谢。我知道你的想法。但我们需要将代码中的->或where函数$query use$request更改为->where