具有两个相似值的 CakePHP 3 查询生成器

CakePHP 3 query builder with two like values

我如何修改我的 CakePHP 3 查询生成器,以便它可以有两个 "like" 具有值("OR" 逻辑函数)的函数?

这个有效:

$exp->eq('b2','my_value')->like('b3','%'.$value.'%')

我想要这样的东西(它不起作用):

$exp->eq('b2','my_value')->like('b3','%'.$valueB3.'%')->like('b4','%'.$valueB4.'%')

除非另有说明,否则表达式构建器将通过 AND 组合语句。如果您想将 OR 与表达式构建器一起使用,请使用 or_() 方法,并将生成的新表达式对象传递到您需要的任何地方,例如:

$exp
    ->eq('b2', 'my_value')
    ->add($exp->or_(
        function (\Cake\Database\Expression\QueryExpression $or) use ($valueB3, $valueB4) {
            return $or
                ->like('b3', '%' . $valueB3 . '%')
                ->like('b4', '%' . $valueB4 . '%');
        }
    ));

那会产生:

b2 = 'my_value' AND (b3 LIKE '%valueB3%' OR b4 LIKE '%valueB4%')

另见