Как переделать данный пример используя hasMany() вместо hasOne() для отображения в ячейке GridView нескольких связанных данных из другой таблицы?
Пример: Ссылка на страницу с примером
Данные из связанных моделей в GridView
Связанные данные выводятся аналогично данным самой модели.
// Простой вариант, но без возможности сортировки по полю
'parent.name',
// Вариант с возможностью сортировки по полю
[
'attribute'=>'parent_id',
'label'=>'Родительская категория',
'format'=>'text', // Возможные варианты: raw, html
'content'=>function($data){
return $data->getParentName();
},
],
В модели Category описаны соответствующие методы.
public function getParent()
{
return $this->hasOne(Category::className(), ['id' => 'parent_id']);
}
public function getParentName()
{
$parent = $this->parent;
return $parent ? $parent->name : '';
}
Сама связь hasMany() будет выглядеть следующим образом:
public function getParents(){
return $this->hasMany(Category::className(), ['parent_id' => 'id']);
}
Так же рекомендую писать не className(), а class, т.к. в yii2 версии 2.0.14 оно deprecated
@deprecated since 2.0.14. On PHP >=5.5, use `::class` instead.
Для вывода всех связанных данных можно сформировать из них строку, примерно так:
public function getParentName(){
$result = '';
foreach($this->parents as $parent){
$result .= $parent->name ?: '';
}
return $result;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Работаю на linux, делаю приложение на yii2-advanced, локальный сервер apache2
В настройках прав доступа Битрикс, раздел CRM, есть Пользователь ТЕСТ с ролью Начальник Отдела