tp5 whereor和Db::raw配合使用会失效
代码如下:
$where = function ($query) use ($ids) { foreach ($ids as $Id) { $query->whereor(Db::raw("find_in_set('{$Id}',ids)")); } }; $company_ids = Foo::where($where)->column('id');
上图代码查询结果是:
SELECT `id` FROM `foo` WHERE ( ( ( find_in_set('18',ids) ) AND ( find_in_set('17',ids) ) ) )
结果是or变成了where
解决方法就是将Db::raw函数去掉,直接使用括号里的字符串就可以了(感觉用Db::raw多此一举了)