有没有办法在cakephp 3中的where子句中设置多个LIKE选项

时间:2018-04-02 14:43:52

标签: sql cakephp-3.0

我想检索与多个部分prase匹配的所有行与列。我的情况可以解释为以下原始sql:

SELECT * 
FROM TABLENAME 
WHERE COLUMN1 LIKE %abc% 
   OR COLUMN1 LIKE %bcd% 
   OR COLUMN1 LIKE %def%;

这里,abc,bcd,def是数组元素。即:array('abc','bcd','def')。有没有办法编写代码传递这个数组,使用cakephp 3形成上面的原始SQL?

N.B:我使用mysql作为DBMS。

1 个答案:

答案 0 :(得分:1)

可能你可以使用Collection来创建一个合适的数组,但我认为foreach循环将在相同数量的代码中完成工作。所以这是我的解决方案假设$query存储您的Query对象

$a = ['abc','bcd','def'];
foreach($a as $value)
{
    $or[] = function ($exp, $q) use ($value) {
        return $exp->like('column1', '%'.$value.'%');
    };
}
$query->where(['or' => $or]);

您也可以使用orWhere(),但我发现它将在3.6

中弃用