3

Yii フレームワークを使用しています。

私は3つのモデルを持っています。

記事 - テーブルの記事 (id、名前)

ArticlesToAuthors - テーブル article_to_authors (id、article_id、author_id、type)

Authors - テーブルの作成者 (id、name)

特定の article_id について、authors.*、article_to_authors.type を取得する必要があります。

私は ArticlesToAuthors モデルでそのような関係を作ろうとしていました:

'authors'  => array(self::HAS_MANY, 'Authors', array('id' => 'author_id'), ),

それから私はクエリを作成しました:

$authors = ArticlesToAuthors::model()->with('authors')->findAll(array('condition' => 'article_id=2217') );


foreach($authors as $a)
{
     //this is not working
     #var_dump($a->authors->name);
         #var_dump($a->name);

     //this works fine
     foreach($a->authors as $aa)
     {
            var_dump($aa->name);
     }
}
  1. すべてのアクティブなレコード オブジェクトを 1 つにまとめて、foreach で foreach を実行しないようにすることはできますか? SQL "SELECT atoa. , a. FROM articles_to_authorsatatoa LEFT JOIN authors a ON atoa.author_id=a.id WHERE atoa.article_id=:article_id"に類似したものが必要です

  2. 私は正しくやっていますか?

ps - 下手な英語で申し訳ありません。

4

1 に答える 1

1

次の関係が必要なようです。

あなたのArticlesToAuthorsテーブルで:

'author' => array(self::BELONGS_TO, 'Authors', 'author_id'),
'article' => array(self::BELONGS_TO, 'Articles', 'article_id'),

そして、完全を期すために、Authorsテーブルで:

'articlesToAuthors'  => array(self::HAS_MANY, 'ArticlesToAuthors', array('id' => 'author_id'), ),

これにより、 にアクセスできるようになります$a->author->name。テストされていません、それは私の頭の上からです。

于 2012-08-09T10:33:37.067 に答える