laravel where orwhere多个 加括号

在数据库查询似乎and优先级总是高于or,然后当然需要将需要先执行的用括号括起来

我试过在模型里面写类似scope的函数,用Eloquent ORM调用自己写的方法,发现这种方法并不是将写的数据查询括起来封装成一个整体,而是直接就是原来的查询代码简化,提高代码复用性的赶脚,所以这种失败了。。

第二种想到了 ->where(function($query){

$query->where()->orwhere();

})
但是这种不能放参数进去!!!比如如果function 里面要写
$query->where('items' ,'like',$keywords)->orwhere('content' ,'like',$keywords);
会报错,在外面的$keywords变量传不进去,于是改成这样

->where(function($query,$keywords){

- $query->where('items' ,'like',$keywords)->orwhere('content' ,'like',$keywords);
})
然后就出现函数第二个变量的报错了,
所以我想知道有没有什么方法可以将$keywords传进去的啊!!!
难道只能用whereraw的方式吗?
求指导
已邀请:

FiveSay - 成武

赞同来自: 王赛

这涉及到 PHP 闭包的用法:
$query->where(function ($query) use ($keywords) {
    $query->where('items'  , 'like', $keywords)
        ->orwhere('content', 'like', $keywords);
});

FiveSay - 成武

赞同来自:

关于依赖注入可以看看这篇文章 PHP 依赖注入

刚刚接触 php3 个月,就能上手 laravel 已经很难得了,由于我自己一路都是跟源码过来的,所以没有办法给你推荐系统学习的资料。看看社区的朋友们是不是有好的资料推荐。

要回复问题请先登录注册