【问题标题】:yii active record join modelsyii 活动记录连接模型
【发布时间】:2012-08-06 09:45:39
【问题描述】:

使用 Yii 框架。

我有 3 个模型。

文章 - 表文章(id,名称)

ArticlesToAuthors - 表articles_to_authors(id、article_id、author_id、类型)

Authors - 表作者(id、name)

我需要获取作者。*,article_to_authors.type 用于特定的 article_id。

我试图在 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. 我可以将所有活动记录对象合二为一,而不是在 foreach 中执行 foreach 吗? 我需要一个类似于 sql "SELECT atoa., a. FROM articles_to_authors atoa LEFT JOIN authors a ON atoa.author_id=a.id WHERE atoa.article_id=:article_id"

  2. 我做得对吗?

附言- 对不起我的英语不好。

【问题讨论】:

    标签: activerecord join yii


    【解决方案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。未经测试,这只是我的想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多