我需要在多个列上创建一个IN条件,比如
...
WHERE
(order_date, order_number) IN (
('2016-03-11', 3455453),
('2016-03-18', 83545454),
('2016-06-17', 5354544)
)
从这样的数组开始:
$orders = [
['2016-03-11', 3455453],
['2016-03-18', 83545454],
['2016-06-17', 5354544]
];
使用cake3查询构建器。我试过
->where(['(order_date, order_number) IN' => $orders]);
但是我收到了错误:
无法将值转换为字符串
我知道手动创建操纵数组的查询并不难,但我想知道是否有一种方法可以做到这一点。
答案 0 :(得分:4)
AFAICT这是不可能的(还)使用数组语法或常规比较表达式,负责转换的代码只处理单个字段和平面数组,参见
<强> Source > \Cake\Database\Expression\Comparison::_stringExpression() 强>
但是,使用元组比较表达式可以很好地实现这一点,该表达式支持处理开箱即用的元组集。在内部,协会使用它来处理复合键。
position: absolute;
left: calc(64.2571% - 1px);
top: 100px;
width: 46px;
height: 10px;