Рассмотрим создание связей между моделями в YII2 на примере блога. У нас есть два CRUD: один для постов, другой для категорий. Поле категории в посте хранит числовой ID из таблицы категорий.
Форма — выпадающий список вместо поля ввода
Сначала подключим нужные классы в файле формы:
use yii\\helpers\\ArrayHelper; use app\\models\\Tags;
Затем заменим автоматически сгенерированное поле на выпадающий список:
= $form->field($model, 'tags')->dropDownList( ArrayHelper::map(Tags::find()->all(), 'tid', 'title') ) ?>
Определение связи в модели
В модели поста определяем связь:
public function getTagz()
{
return $this->hasOne(Tags::className(), ['tid' => 'tags']);
}
GridView — отображение названия вместо ID
Изменяем столбец в таблице GridView для отображения названий категорий вместо числовых ID:
[ 'attribute' => 'tags', 'value' => 'tagz.title', 'filter' => $tagz, ],
Передача доступных значений в переменную $tagz также включает фильтрацию по этому столбцу.