我想检索与多个部分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。
答案 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