关于 SQL 的 where 和 orWhere 的提问

我的搜索关键词这样写

  • 本科&计算机&90后 这个代表且关系
  • 本科|计算机|90后 这个代表或关系

我的思路如下:

  1. 将字符串转换为数组
  2. 将数组传入sql语句中where的参数中
  3. 处理结果
    for($i=1;$i<=sizeof($wd['key']);$i++)
                {
                    $arr[$i]['first'] = 'keywords';
                    $arr[$i]['second'] = 'like';
                    $arr[$i]['third'] = '%'.$wd['key'][$i].'%';
                }
                $results = Infopackage::where($arr)
                    ->orderBy('created_at','desc')
                    ->paginate(10);

以上是且关系的处理,行得通


但是如果是或关系,代码应该如何写,因为orWhere是连着写,例如这样。怎么才能按照上面的思路进行啊,或者说有没有别的思路

 $results = Infopackage::where('keywords','like','%'.'计算机'.'%')
                    ->orWhere('keywords','like','%'.'本科'.'%')
                    ->get()
QueuingAnt
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
leochien
最佳答案

Eloquent 的查詢語句是可以分開的

$query = Infopackage::query();

for($i=1; $i<=sizeof($wd['key']); $i++)
{
    $query->orWhere('keywords', 'like', '%' . $wd['key'][$i] . '%');
}

$result = $query->orderBy('created_at', 'desc')
                ->paginate(10)
8个月前 评论
讨论数量: 6
66

多条件的like?

                $array = explode(',',$include);
                $str   = implode('|',$array);
                $query->whereRaw("items.title REGEXP '$str'");
8个月前 评论
leochien

Eloquent 的查詢語句是可以分開的

$query = Infopackage::query();

for($i=1; $i<=sizeof($wd['key']); $i++)
{
    $query->orWhere('keywords', 'like', '%' . $wd['key'][$i] . '%');
}

$result = $query->orderBy('created_at', 'desc')
                ->paginate(10)
8个月前 评论
$results = Infopackage::where(function ($query){
            $query->orWhere('keywords','like','%'.'本科'.'%')->orWhere('keywords','like','%'.'计算机'.'%');
        })->get();
8个月前 评论
QueuingAnt

@leochien 谢谢您为我解答这个问题,已经解决啦,谢谢

8个月前 评论
QueuingAnt

@66 就是说like的值有多个,如何根据like值的个数写相同个数的orwhere语句,问题是我不知道如何连起来写,所以提了这样一个问题,上面我选的最佳答案的是可行的,也很好理解,也同样感谢您

8个月前 评论
QueuingAnt

@生活无限好 对的对的,就是这样写,谢谢您

8个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!