Laravel Eloquent HasManyThrough - продукт, категория, цвета - PullRequest
0 голосов
/ 04 марта 2019

Мне нужно выбрать все товары в категории с определенными цветами, чтобы иметь в представлении категории (с цветами, указанными в форме), все товары этой категории, но только из выбранных цветов.

Я попробовал это ... но я знаю, что ошибаюсь!Я не очень хорошо понимаю 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 (идентификатор продукта - идентификатор цвета)

...