Activerecord yii活动记录加入模型

Activerecord yii活动记录加入模型,activerecord,join,yii,Activerecord,Join,Yii,使用Yii框架 我有三种型号 项目-表格项目(id、名称) ArticlesToAuthors-表格ArticlesTo作者(id、ArticlesTo作者id、作者id、类型) 作者-表格作者(id、名称) 我需要获取authors.*,article_to_authors.type以获取特定article_id 我试图在ArticlesToAuthors模型中建立这样的关系: 'authors' => array(self::HAS_MANY, 'Authors', array('i

使用Yii框架

我有三种型号

项目-表格项目(id、名称)

ArticlesToAuthors-表格ArticlesTo作者(id、ArticlesTo作者id、作者id、类型)

作者-表格作者(id、名称)

我需要获取authors.*,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);
     }
}
  • 我可以在一个中获取所有活动记录对象而不在foreach中执行foreach吗? 我需要一个类似于sql“SELECT atoa.,a.FROM
    articles\u to\u authors
    atoa LEFT JOIN authors a ON atoa.author\u id=a.id,其中atoa.article\u id=:article\u id”

  • 我做得对吗


  • p、 很抱歉我的英语不好。

    看来您需要以下关系:

    在您的
    文章作者表中:

    'author' => array(self::BELONGS_TO, 'Authors', 'author_id'),
    'article' => array(self::BELONGS_TO, 'Articles', 'article_id'),
    
    'articlesToAuthors'  => array(self::HAS_MANY, 'ArticlesToAuthors', array('id' => 'author_id'), ),
    
    为了完整起见,在您的
    作者表中:

    'author' => array(self::BELONGS_TO, 'Authors', 'author_id'),
    'article' => array(self::BELONGS_TO, 'Articles', 'article_id'),
    
    'articlesToAuthors'  => array(self::HAS_MANY, 'ArticlesToAuthors', array('id' => 'author_id'), ),
    
    这应该允许您访问
    $a->author->name
    。没有测试,这是我的想法