Мне нужно выбрать все товары в категории с определенными цветами, чтобы иметь в представлении категории (с цветами, указанными в форме), все товары этой категории, но только из выбранных цветов.
Я попробовал это ... но я знаю, что ошибаюсь!Я не очень хорошо понимаю hasManyThrough ...
в модели Prodotto:
public function categoria() // il nome del metodo è il metodo della relazione
{
return $this->hasOne(Categoria::class,
'id','categoria_id'
);
}
public function colori()
{
return $this->belongsToMany(Colore::class , 'prodotto_colore')->withTimestamps();
}
в модели Colore:
public function prodottiCategoriaColore()
{
return $this->hasManyThrough(Prodotto::class, Categoria::class);
}
в модели категории:
public function prodotti() // il nome del metodo è il metodo della relazione
{
return $this->hasMany(Prodotto::class,
'categoria_id','id'
);
}
в контроллере категорий:
private function colore($categoriaId , $coloreId)
{
$categoria_qb = Categoria::query()
->where('id', '=', $categoriaId)->with('prodotti');
$prodottiColore_qb = $categoria_qb->where('colore_id' , $coloreId)->with('prodottiCategoriaColore');
$prodotti = $prodottiColore_qb->first();
return view('frontend.categoria', ['prodotti' => $prodotti]);
}
в БД у меня есть таблица для prodotti, одна для colori, одна для категории и сводная таблица prodotto_colore (идентификатор продукта - идентификатор цвета)