CakePHP: Fat Models innerhalb von Plugins…

… oder auch: Wieso wirft CakePHP ständig den SQL Error: 1064 und nimmt als SQL Query meinen Methodennamen?

Folgender Hintergrund: Wir befinden uns innerhalb eines Plugins (‘app/plugins/pluginname/’). Innerhalb des Plugins exisiteren die Controller, die Models und die Views. Die Models erben vom PluginnameAppModel, dieses wiederrum erbt vom AppModel.

Macht man das Model zu einem “Fat Model”, also ergänzt eigene Methoden und ruft diese Methoden innerhalb des dazugehörigen Controllers auf, so erscheint der SQL Error Code 1064.

Die Lösung zum Problem ist recht simpel und einleuchtend, man kommt nur nicht so schnell drauf ;-) . Innerhalb des Controllers muss man mit dem $uses-Attribut das zu nutzende Model bestimmen. Nur reicht es nicht aus, den Modelnamen in das Array zu schreiben, sondern das dazugehörige Plugin eben auch, getrennt durch einen Punkt.

var $uses = array('Pluginname.Model1', 'Pluginname.Model2');