2009-05-12 3 views
1

Ich hätte gerne gewusst, ob es eine gute Idee ist, ein select-Objekt von einer Methode wie '$ selectObj = getSomethingByName ($ name)' zurückzugeben, um es dann an eine andere Methode wie 'getResult ($ selectObj)' zu übergeben Mache den Trick. Die Idee ist, in der Lage sein das Objekt auswählen, um jede nützliche Funktion wie passieren ‚setlimit (10)‘ oder addCriteria (‚blabla‘), je nach meinem Modell ...Was halten Sie davon, ein Select-Objekt anstelle eines Statement-Ergebnisses zurückzugeben?

Aber ist es eine gute Idee, dies zu tun ? es könnte "unsichere" sein, weil Benutzer in der Lage sein wird, das Objekt selbst zu ändern, und ich sollte das nicht wollen.

Ich habe eine einfache Methode vor wie oben getan, aber das Ergebnis als Zeile zurückgegeben ... aber es ist manchmal schmerzhaft, wenn Sie eine komplexe Anweisung haben, abhängig von verschiedenen Tabellen.

Antwort

5

Das Problem, dem Sie gegenüberstehen (komplexe Anweisungen abhängig von verschiedenen Tabellen) ist ein altes und weit verbreitetes Problem mit ORM-Frameworks im Allgemeinen. Es gibt viele Dinge, die SQL tun kann, die ein ORM nicht sehr gut macht. Unweigerlich müssen Sie die unterschiedliche Komplexität ausgleichen, indem Sie viel komplizierten Code in Ihren Controller oder in Ihre View schreiben.

Verwenden Sie stattdessen ein Domain Model Muster und kapseln Sie die komplexe Multitabellen-Datenbanklogik an einer Stelle ein, sodass Ihre Controller und Ansichten nicht über alle Details Bescheid wissen müssen. Sie kennen nur die Schnittstelle Ihrer Domain Model-Klasse, und diese Klasse ist allein dafür verantwortlich zu wissen, wie sie die Informationen aus der Datenbank holt.

Denken Sie daran: ein Modell "HAS-A" Tabelle (oder mehrere Tabellen) - anstelle von Modell "IS-A" Tabelle.

Verwandte Themen