iamsaint
@iamsaint

Выборка из связанных таблиц?

Добрый день.

Помогите, пожалуйста, разобраться. Как получить значения

по связи article.category при выборке



ArticleData::model()->with('article','article.category')->findAll();




Пробую так:

$article = ArticleData::model()->with('article','article.category')->findAll();
echo $article[0]->article->category->title;


Но, возвращается null.



Модели:



<?php
class Category extends CActiveRecord
{
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    public function tableName()
    {
        return 'TBL_CATEGORY';
    }

    public function relations()
    {
        return array(
            'article'=>array(self::HAS_MANY, 'Articles','category'),
        );
    }
}
?>


<?php
class Articles extends CActiveRecord
{
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    public function tableName()
    {
        return 'TBL_ARTICLES';
    }

    public function relations()
    {
        return array(
            'data'=>array(self::HAS_MANY, 'ArticleData','parentuuid'),
            'category'=>array(self::BELONGS_TO, 'Category','category'),
        );
    }
}
?>


<?php
class ArticleData extends CActiveRecord
{
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    public function tableName()
    {
        return 'TBL_ARTICLE_DATA';
    }

    public function relations()
    {
        return array(
            'article'=>array(self::BELONGS_TO, 'Articles','parentuuid'),
            'language'=>array(self::BELONGS_TO, 'Languages','language'),
        );
    }
}?>
  • Вопрос задан
  • 6340 просмотров
Пригласить эксперта
Ответы на вопрос 1
MastaEx
@MastaEx
Ну что ж, поиграем в телепатов :-)
Предположение первое. У вас выключено отображение ошибок notice и вы не видете ошибку «trying to get property of non-object...», которая возникает потому, что в Articles у вас есть и атрибут category и relation с таким же именем.

Включаем отображение всех ошибок.
error_reporting(E_ALL);
ini_set("display_errors", 1);


Если не угадал, то смотрите в логе yii, какой именно запрос выполняется и похож ли он на правду.

Кстати, не нужно писать with('article','article.category'), достаточно with('article.category').
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы