Задать вопрос
@JoneCode

Как правильно сделать связи и запрос в controller?

Есть 3 таблицы "blud", "tproduct", "tproducts_attributes"
"blud" - хранит список блюд
"tproduct" - хранит список продуктов
"tproducts_attributes" - таблица для связи "blud" и "tproduct"

5f7ad6d8dede8499586896.jpeg

Скажите, пожалуйста, как правильно составить связи в моделях "многие ко многим" (проверьте пожалуйста, правильно ли я сделал связи) и связал их в "tproducts_attributes" и как правильно составить запрос в controller чтоб вывести только те списки блюд которые относиться к продукту (которые указаны в таблице "tproducts_attributes")??

Пока в Controller вывожу так (все блюда):
$values = Blud::find()->all();

Связь в модели "blud":
public function getBluds()
    {
        return $this->hasMany(Blud::className(), ['blud_id' => 'id']);
    }


Связь в модели "tproduct":
public function getBluds()
    {
        return $this->hasMany(Blud::className(), ['tproduct_id' => 'id']);
    }


Связи в модели "tproducts_attributes":
public function getBlud()
    {
        return $this->hasOne(Blud::className(), ['id' => 'blud_id']);
    }

    public function getTproduct()
    {
        return $this->hasOne(Tproduct::className(), ['id' => 'tproduct_id']);
    }


Rules в модели "tproducts_attributes":
[['tproduct_id'], 'exist', 'skipOnError' => true, 'targetClass' => Tproduct::className(), 'targetAttribute' => ['tproduct_id' => 'id']],

            [['blud_id'], 'exist', 'skipOnError' => true, 'targetClass' => Blud::className(), 'targetAttribute' => ['blud_id' => 'id']],
  • Вопрос задан
  • 162 просмотра
Подписаться 1 Простой 6 комментариев
Пригласить эксперта
Ваш ответ на вопрос

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

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