近期学习到了Laravel的modelfilter检索,用起来确实比较方便联查的数据也可以直接检索,就是在用到where和orwhenre的时候会出现检索联合查询失效的问题,没考虑到联合查询的条件问题,后面看了一下才发现是写法问题,这里改一下写法的问题。
联合查询失效例子:(和其他条件查询orwhere会失效)
/**
*
* 管理员账号
*
* @param $name
* @return CommissionFilter
*/
public function name($name)
{
return $this->where('dealer.name', 'LIKE', "%$name%")->orwhere('dealer.phone', '=', $name);
}
如果出现这种一个条件查询多个字段的时候,就会遇到问题,当然也可以在when里面闭包查询。
联合查询修改后:在where里面闭包查询后,这样解决了就好了
/**
*
* 管理员账号
*
* @param $name
* @return CommissionFilter
*/
public function name($name)
{
return $this->where(function ($value) use ($name) {
return $value->where('dealer.name', 'LIKE', "%$name%")->orwhere('dealer.phone', '=', $name);
});
}
在使用的时候也比较方便:
需要提前引入:
public function modelFilter()
{
return $this->provideFilter(CommissionFilter::class);
}
直接model类直接filter就可以,需要传入相关条件
Commission::filter($params)
推荐