Вывод значения в dropDownList Yii2 из связанных таблиц?

Для вывода значения в dropDownList в Yii2 из связанных таблиц, можно воспользоваться функцией dropDownList() или activeDropDownList() внутри представления. Для этого необходимо выполнить несколько шагов:

1. Определить связь между таблицами в модели Yii2. Например, если у вас есть модели Product и Category и между ними установлена связь "один ко многим", то в модели Product нужно определить следующую связь:

public function getCategory()
{
    return $this->hasOne(Category::className(), ['id' => 'category_id']);
}

2. В представлении, где вы хотите отображать dropDownList, используйте функцию dropDownList() или activeDropDownList(), передавая список значений из связанной таблицы:

<?= $form->field($model, 'category_id')->dropDownList(ArrayHelper::map(Category::find()->all(), 'id', 'name')) ?>

Обратите внимание, что мы получаем все категории с помощью Category::find()->all(), а затем используем функцию ArrayHelper::map() для преобразования массива категорий в ассоциативный массив, где ключами будут значения id категории, а значениями будут значения name категории.

3. Если у вас есть форма, в которой вы хотите использовать dropDownList, то в контроллере необходимо добавить соответствующие атрибуты и правила валидации. Например:

public function actionCreate()
{
    $model = new Product();

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(['view', 'id' => $model->id]);
    }

    return $this->render('create', [
        'model' => $model,
    ]);
}
public function actionUpdate($id)
{
    $model = $this->findModel($id);

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(['view', 'id' => $model->id]);
    }

    return $this->render('update', [
        'model' => $model,
    ]);
}

4. Также, если у вас есть форма, в которой вы хотите использовать dropDownList, нужно добавить правило валидации для атрибута category_id в правила модели, чтобы убедиться, что значение в поле category_id будет корректным:

public function rules()
{
    return [
        // другие правила валидации
        [['category_id'], 'exist', 'targetClass' => Category::className(), 'targetAttribute' => ['category_id' => 'id']],
    ];
}

5. После этого, в форме отображения значения из связанной таблицы будет выбрано значение по умолчанию, которое соответствует текущему значению category_id в модели Product. При сохранении формы, значение category_id будет автоматически привязано к связанной таблице.

Надеюсь, это решение поможет вам вывести значения в dropDownList Yii2 из связанных таблиц.