Laravel фильтрует отношения один ко многим - PullRequest
0 голосов
/ 25 августа 2018

У меня есть Product и Category модели, привязанные один ко многим. Как отфильтровать товары по категориям? В шаблоне у меня есть

 <a href="{{ route('product.productsByCategory', $category->id) }}" class="list-group-item">{{ $category->name }}</a>

Как написать функцию для фильтрации товаров по категориям?

 public function productsByCategory($category_id){
   $products = Product:: ????
   return view("layouts._productsByCategory", compact("products"));

Ответ

$products = Product::where('category_id', $category_id)->get();

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Возможно, вам будет проще пройти через категорию:

public function productsByCategory($category_id){
    return view("layouts._productsByCategory", [
       'products' => Category::with('products')->find($category_id)->products
    ]);
}
0 голосов
/ 25 августа 2018

Вы можете использовать:

$products = Product::where('category_id', $category_id)->get();

или

$products = Product::whereHas('category', function($q) use ($category_id) {
               $q->where('id', $category_id);
           });

при условии, что вы установили отношение category в Product модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...