Получение данных связанной модели MANY_MANY в CActiveDataProvider

Создаем 3 простые таблицы




CREATE TABLE `item1` (

  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

  `item1` varchar(255) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `item1` VALUES ('1', 'запись11');

INSERT INTO `item1` VALUES ('2', 'запись12');


CREATE TABLE `item2` (

  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

  `item2` varchar(255) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `item2` VALUES ('1', 'запись21');

INSERT INTO `item2` VALUES ('2', 'запись22');


CREATE TABLE `item_rel` (

  `id_item1` int(10) unsigned NOT NULL,

  `id_item2` int(10) unsigned NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `item_rel` VALUES ('1', '1');



По ним создаем 2 модели




<?php


class Item1 extends CActiveRecord {


    public static function model($className=__CLASS__) {

        return parent::model($className);

    }


    public function tableName() {

        return 'item1';

    }


    public function relations() {


        return array(

            'item2' => array(self::MANY_MANY, 'Item2', 'item_rel(id_item1, id_item2)', 'together' => true),

        );

    }


}


?>






<?php


class Item2 extends CActiveRecord {


    public static function model($className=__CLASS__) {

        return parent::model($className);

    }


    public function tableName() {

        return 'item2';

    }


    public function relations() {


        return array(

            'item1' => array(self::MANY_MANY, 'Item1', 'item_rel(id_item2, id_item1)', 'together' => true),

        );

    }


}


?>



Делаем простенький контроллер




<?php


class ItemController extends Controller {


    public function actionIndex() {

        $dataProvider = new CActiveDataProvider('Item1', array(

                    'criteria' => array(

                        'with' => 'item2',

                    ),

                ));

        $this->render('index', array(

            'dataProvider' => $dataProvider,

        ));

    }


}

?>



И вьюху к нему




<?php foreach ($dataProvider->data as $v) : ?>

    <?= $v->item1; ?> - <?= $v->item2->item2; ?>

<?php endforeach; ?>



В итоге, невозможно получить свойство модели $v->item2->item2

"Trying to get property of non-object"

Сама же связанная модель генерится, var_dump($v->item2) это показывает, но как получить доступ к свойствам непонятно.

Сам sql запрос генерится верный




SELECT `t`.`id` AS `t0_c0`, `t`.`item1` AS

`t0_c1`, `item2`.`id` AS `t1_c0`, `item2`.`item2` AS `t1_c1` FROM `item1`

`t`  LEFT OUTER JOIN `item_rel` `item2_item2` ON

(`t`.`id`=`item2_item2`.`id_item1`) LEFT OUTER JOIN `item2` `item2` ON

(`item2`.`id`=`item2_item2`.`id_item2`)  LIMIT 10



Собственно вопрос: Как использовать данные связанной модели во вьюхе?

Объяснили в общем форуме особенность MANY_MANY


<?=$v->item2[0]->item2;?>