Ich schreibe gerade meine erste Anwendung mit Zendframework. Meine Frage bezieht sich auf das Model-View-Controller (MVC) Architekturmuster.
Ich habe derzeit ein Modell mit Verweis auf eine Datenbanktabelle. Hier sind die Klassen, die ich derzeit habe:
Model_Person
Model_PersonMapper
Model_DbTable_Person
Ich habe im Netz viele Beispiele gesehen, aber bei allen handelt es sich um einfache Fälle von Einfügen/Aktualisieren/Löschen. In meiner Situation muss ich prüfen, ob eine Person existiert, und wenn nicht, muss ich sie einfügen und die ID abrufen (ich weiß, dass save die Id zurückgibt, aber das ist nicht genau das, was ich tun muss, dies ist ein Beispiel).
Es ist ganz einfach, aber ich möchte wissen, wo ich die Datenbanklogik für alle anderen spezifischen Fälle unterbringen soll. Einige andere Fälle könnten Prüfungen über andere Tabellen oder ... was auch immer beinhalten!
Sollte ich alle spezifischen Funktionen in meinem Model_XXXXMapper mit etwas hinzufügen, die sehr spezifisch mit der aktuellen Validierung/Prozess sein würde, die ich tun möchte? wie eine Funktion getIdOfThePersonByNameOrInsertIfNotExists() (Beispielname natürlich!!!)
Oder sollte es in den Controller mit einigen weniger spezifischen Zugang zu meinem Modell würde validiert werden?
Mit anderen Worten, wo muss ich alle datenbezogenen Funktionen oder Prüfungen unterbringen?