вывод данных их связанных таблиц

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
dakota
Сообщения: 7
Зарегистрирован: 2016.03.09, 20:00

вывод данных их связанных таблиц

Сообщение dakota »

Помогите пожалуйста разобраться. Почему в поле contents.title ничего не отображается

Есть 2 таблицы (material, content) со связью

Код: Выделить всё

public function getContents()
    {
        return $this->hasMany(Content::className(), ['id_material' => 'id']);
    }
в контроллере прописываю

Код: Выделить всё

 public function actionIndex($group=false)
    { 
            $dataProvider = new ActiveDataProvider([
                  'query' => Material::find()->with('contents')->where(['id_material_type'=>$group]),
             ]);

           return $this->render('index', [
                    'dataProvider' => $dataProvider
            ]);
}
во view

Код: Выделить всё

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        //'filterModel' => $searchModel,
        'columns' => [
            'id',                
            'contents.title',
            'date_create',
            'date_end',
            'date_start',
            'date_update',
        ],
    ]); ?>
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: вывод данных их связанных таблиц

Сообщение ElisDN »

Потому что это hasMany, и в contents содержится массив.
dakota
Сообщения: 7
Зарегистрирован: 2016.03.09, 20:00

Re: вывод данных их связанных таблиц

Сообщение dakota »

Код: Выделить всё

ii\data\ActiveDataProvider Object
(
    [query] => Array
        (
            [0] => backend\models\Material Object
                (
                    [_attributes:yii\db\BaseActiveRecord:private] => Array
                        (
                            [id] => 8
                            [id_material_type] => 1
                            [id_billing] => 0
                            [date_create] => 2016-03-09 02:03:06
                            [date_update] => 2016-03-09 02:03:06
                            [date_start] => 2016-03-28
                            [date_end] => 2016-03-24
                            [status] => active
                        )

                    [_oldAttributes:yii\db\BaseActiveRecord:private] => Array
                        (
                            [id] => 8
                            [id_material_type] => 1
                            [id_billing] => 0
                            [date_create] => 2016-03-09 02:03:06
                            [date_update] => 2016-03-09 02:03:06
                            [date_start] => 2016-03-28
                            [date_end] => 2016-03-24
                            [status] => active
                        )

                    [_related:yii\db\BaseActiveRecord:private] => Array
                        (
                            [contents] => Array
                                (
                                    [0] => backend\models\Content Object
                                        (
                                            [_attributes:yii\db\BaseActiveRecord:private] => Array
                                                (
                                                    [id] => 5
                                                    [id_material] => 8
                                                    [id_lang] => 1
                                                    [id_url] => 2
                                                    [title] => VPS
                                                    [keyword] => Keyword
                                                    [description] => Description
                                                    [text] => <p>sss</p>

                                                )

                                            [_oldAttributes:yii\db\BaseActiveRecord:private] => Array
                                                (
                                                    [id] => 5
                                                    [id_material] => 8
                                                    [id_lang] => 1
                                                    [id_url] => 2
                                                    [title] => VPS
                                                    [keyword] => Keyword
                                                    [description] => Description
                                                    [text] => <p>sss</p>

                                                )

                                            [_related:yii\db\BaseActiveRecord:private] => Array
                                                (
                                                )

                                            [_errors:yii\base\Model:private] => 
                                            [_validators:yii\base\Model:private] => 
                                            [_scenario:yii\base\Model:private] => default
                                            [_events:yii\base\Component:private] => Array
                                                (
                                                )

                                            [_behaviors:yii\base\Component:private] => Array
                                                (
                                                )

                                        )

                                )

                        )

                    [_errors:yii\base\Model:private] => 
                    [_validators:yii\base\Model:private] => 
                    [_scenario:yii\base\Model:private] => default
                    [_events:yii\base\Component:private] => Array
                        (
                        )

                    [_behaviors:yii\base\Component:private] => Array
                        (
                        )

                )

            [1] => backend\models\Material Object
                (
                    [_attributes:yii\db\BaseActiveRecord:private] => Array
                        (
                            [id] => 9
                            [id_material_type] => 1
                            [id_billing] => 0
                            [date_create] => 2016-03-09 04:03:32
                            [date_update] => 2016-03-09 04:03:32
                            [date_start] => 2016-03-28
                            [date_end] => 2016-03-30
                            [status] => active
                        )

                    [_oldAttributes:yii\db\BaseActiveRecord:private] => Array
                        (
                            [id] => 9
                            [id_material_type] => 1
                            [id_billing] => 0
                            [date_create] => 2016-03-09 04:03:32
                            [date_update] => 2016-03-09 04:03:32
                            [date_start] => 2016-03-28
                            [date_end] => 2016-03-30
                            [status] => active
                        )

                    [_related:yii\db\BaseActiveRecord:private] => Array
                        (
                            [contents] => Array
                                (
                                    [0] => backend\models\Content Object
                                        (
                                            [_attributes:yii\db\BaseActiveRecord:private] => Array
                                                (
                                                    [id] => 6
                                                    [id_material] => 9
                                                    [id_lang] => 1
                                                    [id_url] => 3
                                                    [title] => VPS2
                                                    [keyword] => Keyword
                                                    [description] => Description
                                                    [text] => <p>eeeee</p>

                                                )

                                            [_oldAttributes:yii\db\BaseActiveRecord:private] => Array
                                                (
                                                    [id] => 6
                                                    [id_material] => 9
                                                    [id_lang] => 1
                                                    [id_url] => 3
                                                    [title] => VPS2
                                                    [keyword] => Keyword
                                                    [description] => Description
                                                    [text] => <p>eeeee</p>

                                                )

                                            [_related:yii\db\BaseActiveRecord:private] => Array
                                                (
                                                )

                                            [_errors:yii\base\Model:private] => 
                                            [_validators:yii\base\Model:private] => 
                                            [_scenario:yii\base\Model:private] => default
                                            [_events:yii\base\Component:private] => Array
                                                (
                                                )

                                            [_behaviors:yii\base\Component:private] => Array
                                                (
                                                )

                                        )

                                )

                        )

                    [_errors:yii\base\Model:private] => 
                    [_validators:yii\base\Model:private] => 
                    [_scenario:yii\base\Model:private] => default
                    [_events:yii\base\Component:private] => Array
                        (
                        )

                    [_behaviors:yii\base\Component:private] => Array
                        (
                        )

                )

        )

    [key] => 
    [db] => 
    [id] => 
    [_sort:yii\data\BaseDataProvider:private] => 
    [_pagination:yii\data\BaseDataProvider:private] => 
    [_keys:yii\data\BaseDataProvider:private] => 
    [_models:yii\data\BaseDataProvider:private] => 
    [_totalCount:yii\data\BaseDataProvider:private] => 
    [_events:yii\base\Component:private] => Array
        (
        )

    [_behaviors:yii\base\Component:private] => 
)
dakota
Сообщения: 7
Зарегистрирован: 2016.03.09, 20:00

Re: вывод данных их связанных таблиц

Сообщение dakota »

как в <?= GridView::widget([ ... добаться до нужного элемента
Аватара пользователя
chungachguk
Сообщения: 435
Зарегистрирован: 2012.07.17, 11:52

Re: вывод данных их связанных таблиц

Сообщение chungachguk »

dakota писал(а):как в <?= GridView::widget([ ... добраться до нужного элемента
Попробуй

Код: Выделить всё

...
'contents.title',
...
заменить на

Код: Выделить всё

[
'attribute' => 'contents',
    'value' => function($model) {
        $out = '';
        foreach($model->contents as $content) {
            $out.= $content->title;
        }
        return $out;
    }
]
dakota
Сообщения: 7
Зарегистрирован: 2016.03.09, 20:00

Re: вывод данных их связанных таблиц

Сообщение dakota »

ура)) заработало. Огромное спасибо))
Ответить