Statt sich mit find() Anweisungen herumzuschlagen, passiert es gerade Anfängern immer wieder, dass sie statt dessen lieber direkt ein SQL-Statement mittels query() oder execute() ausführen.

Das solltet ihr aber wirklich nicht tun!

Mit einem Kollegen hatte ich darüber viele Diskussionen, weil ich auch lieber direkt das SQL angegeben habe, aber dann brachte er irgendwann das ultimative Argument:

Du umgehst damit beforeFind() und afterFind()!

Das war’s. Das ultimative Argument. Denn er hat Recht.

Stellt euch vor, dass ihr in afterFind() eines Models die gefundenen Daten zusätzlich anreichert. Sei es ein einfaches name, welches sich aus Vor- und Nachname zusammensetzt, oder andere, beliebig komplexe Dinge.

Wenn ihr nun mittels query() Daten aus diesem Model holt, fehlen die zusätzlichen Felder. Die Folge wird sein, dass euer Code Fehler produziert.

Macht euch also lieber die Arbeit und setzt euch mit find() auseinander. Dabei lernt ihr nicht nur eine Menge über CakePHP, sondern habt im Ergebnis auch besser wartbaren Code.