Ich brauche eine IN-Bedingungen auf mehrere Spalten zu erstellen, wie dieseQuery Builder: IN-Klausel mit Verbundstützen
...
WHERE
(order_date, order_number) IN (
('2016-03-11', 3455453),
('2016-03-18', 83545454),
('2016-06-17', 5354544)
)
aus einem Array wie folgt beginnen:
$orders = [
['2016-03-11', 3455453],
['2016-03-18', 83545454],
['2016-06-17', 5354544]
];
cake3 Query Builder verwenden. Ich habe versucht, mit
->where(['(order_date, order_number) IN' => $orders]);
aber ich erhalte eine Fehlermeldung:
Cannot convert value to string
Ich weiß, dass es nicht schwer ist, manuell die Abfrage zu erstellen, um das Array zu manipulieren, aber ich würde gerne wissen, ob es ein Kuchen Weg es zu tun.
Ist das, was Sie [gültig IN Syntax] zu tun versuchen (http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html #funktion_in)? Ich denke du suchst nach "OR". – AD7six
Oh 'IN kann verwendet werden, um Zeilenkonstruktoren zu vergleichen:' - heh hat das nie gewusst/gelesen. Ich erwarte nicht, dass es dafür eine eingebaute Methode gibt, es ist nicht üblich (zumindest IME). – AD7six
Ich denke, es ist eine gültige IN-Syntax. In der Tat sagt das Handbuch, dass _IN verwendet werden kann, um Zeilenkonstruktoren zu vergleichen. Es funktioniert auch in meiner Anwendung (auch wenn ich zustimme, dass nicht immer _works_ bedeutet, dass es gültig ist). Natürlich kann ich es durch eine äquivalente OR-Klausel ersetzen, aber das IN scheint meiner Meinung nach kompakter zu sein – arilia