Использование Laravel Как можно получить продукты определенного размера для категории? - PullRequest
0 голосов
/ 06 января 2019

У меня есть категория миграции, как это:

id
title
parent_id

Затем я сохраняю продукты в другой таблице миграции, как это

id
category_id
title
price

Затем я сохраняю продукты в другой таблице миграции, например:

id
product_id
size (like M/L/1 Year etc)
qty

Я могу получить все товары категории, используя следующий запрос:

$category = Category::first();
$products = $category->products;

У меня вопрос, как можно получить продукты определенного размера? как я хочу получить все продукты M размеров одной категории?

Обновленный ответ:

$category = Category::first();
$products = $category->products()
                     ->whereHas('stocks', function($q){
                          $q->where('size', '=', 'M');
                      })
                     ->get();

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Сначала вы получите все категории.

$category = Category::first(); // You can get all the categories or in where condition whatever your need
$size = "M" //Comming from the request

Для продуктов, где есть категории и размеры, как указано Я надеюсь, у вас есть отношение, определенное для запаса в модели продукта.

$product = $category->whereHas('products', function($query) use ($size){
    return $query->whereHas('stock', function($stock) use ($size){
        return $stock->where('size', $size);
    });
})->with(['products'=>function($q) use ($size){
    return $q->whereHas('stock', function($stock) use ($size) {
        return $stock->where('size', $size);
    });
}])->get();

Это даст вам категорию, в которой есть только те товары, размер которых указан в запросе.

0 голосов
/ 06 января 2019

Можно сделать,

$category = Category::first();
$products = $category->products()
                     ->whereHas('stocks', function($q){
                          $q->where('size', '=', 'M');
                      })
                     ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...