2009-05-12 7 views
1

'$ selectObj = getSomethingByName($ name)'のようなメソッドからselectオブジェクトを返すことをお勧めしたいのですが、それを 'getResult($ selectObj)'のような別のメソッドに渡すことをお勧めしたいと思います。トリックを行う。 考え方は、選択オブジェクトをモデルに応じて 'setLimit(10)'やaddCriteria( 'blabla')などの便利な関数に渡すことができるようにすることです...ステートメント結果の代わりにselectオブジェクトを返すとはどう思いますか?

これを行うのは良い考えです?ユーザーがオブジェクトを自分で修正できるので「安全ではない」可能性があります。これは望ましくありません。

私は以前のように単純なメソッドを実行していましたが、

答えて

5

あなたが直面している問題(異なる表に依存する複雑なステートメント)は、ORMフレームワークで一般的に広く見られている問題です。 SQLにできることはたくさんありますが、ORMはそれほどうまく機能しません。必然的に、コントローラやビューに複雑なコードをたくさん書くことによって、複雑さを変えなければなりません。

代わりにDomain Modelパターンを使用し、複雑なマルチテーブルデータベースロジックを1つの場所にカプセル化してください。コントローラとビューはすべての雑多な詳細について知る必要はありません。彼らはあなたのDomain Modelクラスのインターフェイスについて知っているだけで、そのクラスはデータベースから情報を取得する方法を知る唯一の責任があります。

覚えていること:モデル "IS-A"テーブルではなく、モデル "HAS-A"(または複数のテーブル)を覚えておいてください。

関連する問題