#php #yii2 #gridview
Имеется GridView, но категории выведены в виде цифр. Как вывести названия из другой таблицы - категорий вместо этих цифр по связи Category_id-Title? Очень трудно дается Yii2. Что мне нужно прописать в коде? Я пробовал по-разному, и тут брал, и тут. Но всё оканчивалось ошибками. Спасибо за помощь!
Ответы
Ответ 1
[ 'attribute' => 'category_id', 'filter' => Html::activeDropDownList( $searchModel, 'category_id', ArrayHelper::map(Category::find()->all(), 'id', 'name'), ['class' => 'form-control'] ), 'value' => 'category.name', ] Вот такой метод ещё работает, на фильтр не обращайте внимания, я про 'value' => 'category.name'. Не знаю красивее ли это, чем в предыдущем варианте, но я сам новенький. Работает так, подскажет может кто из бывалых в чем разница?Ответ 2
Требуется для начала определить связи в модели, например, у Вас есть модели для таблиц Category и Data, тогда в модели category будет такой метод: public function getData() { return $this->hasOne(Data::className(), ['id' => 'data_id']); } Подробнее тут расжёвано про Active Record. Далее, мы можем непосредственно в GridView настроить собственный столбец: $dataProvider, 'filterModel' => $searchModel, 'columns' => [ [ 'attribute' => 'id', 'value' => function ($model, $key, $index, $widget) { return $model->data->title; }, 'format' => 'raw', ], ], ]); Возможно, я что-то и упустил из виду или не совсем верно понял, что вы хотите добиться, но советую почитать документацию на гитхабе, где всё довольно хорошо расжёвано. Успехов в изучении.
Комментариев нет:
Отправить комментарий