対クエリに参加しました:Zend_Db_Tableが、私はベストプラクティスとデータベースのデータにアクセスしながら一貫性を達成するための最良の方法だろうかと思ったデータベースビュー
現在の構造が続く
Data Access --> Business Logic --> Controller --> View
マイデータアクセスとなります層は、表ごとにZend_Db_Table
,Zend_Db_TableRowset
およびZend_Db_TableRow
で構成されています。私は彼の名に基づいて特定のユーザーを取得したい
:
私のビジネスロジックは、問題のあるクエリのtable
例に基づいてという名前のモデルに格納されます。これを行うには、user
テーブルとrole
テーブル(role.id
はユーザテーブルでrole_id
と呼ばれます)があります。
返される各行に対して追加クエリを実行するfindDependentRowset
を使用する必要はありません。 (多くの行を返すことができるデータを表示するデータグリッドで問題になる)。
選択肢は私が持っている(のgetName()を単純化するために、この例で使用されているが、それは何も処理することができます):返されるuserテーブルのロールテーブルの上に参加
は、カスタムを作ります
associative array
で構成されたindex array
です。その場合、私のModel_DbTable_User
に定義されているgetName()
関数を名前(ファーストネーム+ミドル+ラストネーム)を作成するために呼び出すことはできません。私の配列をZend_Db_Table_Rowset
(または私のカスタムtable_rowset)に "キャスト"しても、汎用のZend_Db_Table_Row
オブジェクトを取得するので、カスタムクラスメソッドにアクセスできません。実行時にクエリに
CONCAT()
を使用してカスタム結合を行いますが、名前はビルドされているので、getName()
メソッドは必要ありません。しかし、私が適用される特定のロジックを持っている場合、私は立ち往生しています。は私のデータベースに
user
とrole
表を結合するビューを作成し、Zend_DbTable
、Zend_DbTableRowset
とZend_DbTableRow
の新しいセットを作成します。こうすることで、データベーススタックに特定のロジックを持たせることができます。ORM(propelまたはdoctrine(1または2))は、これらの経験はありません。適切な選択を行うために、より多くの情報が必要な場合があります。
私の別の目的は、私は私のデータ構造の一貫性
すなわち得ることを確認することです: 配列のすべての方法:
$row = $rowset->current();
$row->field;