CakePHP Abfrage - komplexe UND/ODER Bedingungen
Ich versuche, meinen Kopf um die komplexen Bedingungen von CakePHP und habe gelesen die docs aber bin kämpfen mit dieser Abfrage.
SELECT field1,
field2
WHERE id = 123456
AND ((holding_date = Last_day(holding_date)
AND Month(holding_date) IN(3, 6, 9, 12))
OR (holding_date = '2013-09-15'))
Produzieren die oben genannten Bedingungen, was würde meine conditions
array Aussehen?
InformationsquelleAutor harryg | 2013-09-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
CakePHP Bedingungen und sql-Ausdrücke
Während die Bedingungen in Frage zu stellen, sind nicht so Komplex, berühren Sie auf ein paar Punkte, die bedeuten, Sie kann schwierig sein, zu definieren, richtig. Einige der Dinge, die zu wissen bei der Definition von cakephp Bedingungen:
"AND" => ...
BedingungenUnter Berücksichtigung der obigen Hinweise, die Bedingungen in der Frage ausgedrückt werden kann als:
Sind die Ergebnisse in:
Hinweis: Leerzeichen ist ganz wichtig =) ich falsch verstanden, die Frage ursprünglich allein wegen der inkonsistenten Leerzeichen in der Frage zu sql.
OR
Regeln in Ihrer eigenen arrays. PHP wird nicht warnen, wenn die Schlüssel vorhanden sind und wenn Sie zwei Regeln aufhold_date
wird nur die Letzte verwendet.unnötige Verschachtelung macht die Dinge schwer zu Lesen aber so ist es IMO nur eine gute Idee zu tun, wenn es erforderlich ist, oder Bedingungen gebaut werden itteratively (Das gleiche kann gesagt werden für alle array-Schlüssel
OR
ist nicht ein Sonderfall). Wennholding_date
wurden in zweiOR
Vergleiche, es wäre besser geeignetIN
(d.h.'holding_date' => array('first', 'second')
).Ja, gute Antwort. Während ich Tat es auf meine eigene Ausgrenzung der überflüssigen "UND"s macht es übersichtlicher. Entschuldigung über die Leerzeichen - war sich nicht ganz sicher, wie Sie Sie anwenden, um SQL
InformationsquelleAutor AD7six
OK ich habe es gelöst:
InformationsquelleAutor harryg
Versuchen Sie dies:
OR
Zustand. Was ich sagen kann, dieser erfordert immer eine der ersten Bedingung erfüllt sein, wenn dies nicht das ist, was ich will.Ich habe Englisch mein Zustand ist " - Rekord muss fallen am letzten Tag des Quartals, [die ersten 2 Bedingungen] ODER auf ein Datum, das ich angeben [letzter Zustand]"
InformationsquelleAutor lukasz