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多此一举了)

发表回复

您的电子邮箱地址不会被公开。