@Acvoloe

Как сделать двойную связь yii2?

Всем привет!
Как можно построить двойную связь в yii2?
Создана CRUD модель через Gii таблицы Client. С помощью hasOne была выведена связь с таблицей Subnet.
Как можно вывести в gridview модели Client связь с Bras.name?
5aebc71f0a091497238533.png
  • Вопрос задан
  • 346 просмотров
Решения вопроса 2
kimono
@kimono
Web developer
Client:
public function getSubnet(){
    return $this->hasOne(Subnet::class, ['id' => 'subnet']);
}
public function getBras(){
    return $this->hasOne(Bras::class, ['id' => 'bras'])->via('subnet');
    // или
    // return $this->hasOne(Bras::class, ['id' => 'bras'])->viaTable(Subnet::tableName(), ['id' => 'subnet']);
}

ClientSearch:
ClientSearch {
  public $brasName; // добавляем атрибут в модель поиска
}

gridview:
'id',
[
  'attribute' => 'brasName', // выводим в гриде
  'value' => function(Client $model){
    return $model->bras ? $model->bras->name : null;
  }
],
Ответ написан
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
Можно создать связь в модели Subnet связь на Bras и использовать цепочку этих связей.
В модели Subnet
public function getBras(){
    return $this->hasOne(Bras::class, ['id' => 'bras']);
}

В GridView
'value' => 'subnet.bras.name'
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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