为了账号安全,请及时绑定邮箱和手机立即绑定

使用或多个位置中的多个查询生成器拉拉维尔

使用或多个位置中的多个查询生成器拉拉维尔

PHP
DIEA 2022-09-25 20:07:05
我想从具有4个条件的数据库垫中进行选择,其中1个条件必须使用“or”。我写了这个查询生成器,它的工作原理。但我想知道我是否可以使用较短的查询。例如,在“where”括号中使用3个条件,在“或Where”括号中使用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();
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

您必须在 内部中对条件进行分组,并以函数作为参数。ORorWhere()


->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}%");

})

这将生成类似于


WHERE pads.user_id = ?

  AND pads.status = ? 

  AND pads.language_id = ?

  AND (

       pads.title LIKE ?

       OR pads.people LIKE ?

   )


查看完整回答
反对 回复 2022-09-25
  • 1 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信