4

Zend を使用して複数のデータベース テーブルからデータを取得するベスト プラクティスはありますか? 近い将来、自分が書いたコードをリファクタリングしたくなるよりも、知りたいです。Zendのドキュメントを読んでいたところ、次のように書かれていました:

「結合されたテーブルの列を行/行セットで返すように指定することはできません。これを行うと、PHP エラーが発生します。これは、Zend_Db_Table の整合性が保持されるようにするために行われました。つまり、Zend_Db_Table_Row は、そのテーブルから派生した列のみを参照する必要があります。親テーブル。」

したがって、複数のモデルを使用する必要があると思います-それは正しいですか? たとえば、日付が 2 つの日付の間にある特定のユーザー ID のすべての注文を取得したい場合、どうすればよいでしょうか?

コントローラーから 2 つの異なるモデルにアクセスし、アクションでそれぞれのデータを組み合わせることが可能であることはわかっていますが、私はこれを行うことに満足していません。これを行う...

どこで、なぜ、どのように?:)

ありがとう!

4

3 に答える 3

5

ZFSTDE を読んでいる場合、第 9 章 ( http://www.survivethedeepend.com/zendframeworkbook/en/1.0/implementing.the.domain.model.entries.and.authors ) で、この問題はデータ マッパーを使用して対処されます。 .

また、2 つのテーブルを結合することもできますが、最初に選択オブジェクトでsetIntegrityCheck(false)メソッドを呼び出してください。ドキュメントは、行が親テーブルを参照する必要があると言っていますが、それができないという意味ではありません:)

于 2010-08-26T19:03:11.947 に答える
1

Zend_Db_Tableを「モデル」として考えるのはやめましょう。

独自のリッチなドメイン中心のモデルクラスを作成して、コントローラー(およびビュー)と永続性ロジック(Zend_Db / Zend_Db_Table / Zend_Db_Selectを使用するもの)の間に配置して、データベースからデータをロード/保存する必要があります。

于 2010-08-26T19:05:00.237 に答える
1

確かに、同時に複数の db テーブルをクエリできます。こちらの公式 ZF ドキュメントをご覧ください http://framework.zend.com/manual/en/zend.db.select.html#zend.db.select.building.join

単一のユーザーのすべての注文を取得する例については、テーブルの関係が答えですhttp://framework.zend.com/manual/en/zend.db.table.relationships.html

于 2010-08-26T19:11:40.973 に答える