2011-01-23 9 views
1

データマッパーとリレーションシップを使用する方法は?クイックスタートの例では、例Zendフレームワークのデータマッパーとリレーション?

(表)ユーザー (テーブル)の記事 (テーブル)タグ

をするために..私は、リレーショナル・データと働いている場合、私はDataMapperのでどのように動作するかを少し情報が欠落しています

ユーザー-one_to_many-タグ-many_to_many-タグ

データマッパーで1人のユーザーを取得した場合、関連する記事とタグを取得するにはどうすればよいでしょうか?それらはモデルにも定義する必要がありますか?あらゆる例やベストプラクティス?

答えて

1

これらの「記事」、「ユーザー」、および「タグ」のそれぞれのクラスをお持ちの場合は、確実にクラスに追加のメソッドを追加できます。


class Article { 
    public function getTags() { 
    // Talk to your DAO object or table data gateway or whatever 
    // and instantiate them and return an array of Tag objects 
    } 
} 

class User { 
    public function getArticles() { } 
} 

をそれとも、のような静的ゲートウェイクラスでそれらを実装することができます:たとえば、あなたが持っているかもしれない、実際に取得するだけでなく、使用することができ、あなたのモデルで使用するデータ行を取得する方法については


class Article_Gateway { 
    public static function fetchByTag($tagName) { } 

    public static function fetchByUser($userName) { } 
} 

Zend_Db_Tableは関係の機能があることを行うには(http://framework.zend.com/manual/en/zend.db.table.relationships.html

例:


$accountsTable = new Accounts(); 
$accountsRowset = $accountsTable->find(1234); 
$user1234 = $accountsRowset->current(); 

$bugsReportedByUser = $user1234->findDependentRowset('Bugs'); 
+0

ThxをI私は自分でORMを使い、これらのタイプのファイルを手作業で作成する時間を節約したいと思っています。 – Chris

+0

開始するためにコード生成を調べることはありますか? –

関連する問題