@HabrDima20

Как сделать выборку из базы данных товаров?

Есть код по которому я сортирую товары при связи hasMany.
$vendor = $request->vendor;
        
        $products = Product::with('user')
            ->when($vendor, function ($query, $vendor) {
                    $query->where('vendor_id', $vendor);
            })
            ->paginate(15);

Но есть еще связь Многие ко многим и если передать массив то не срабатывает!
А нужно отсортировать по размеру и цвету и может у одного товара быть не один размер и цвет!
Нужно по массиву id сортировать но не пойму как правильно сделать?
->when($size, function ($query, $size) {
               $query->where('size_id', $size);   //----эта строка не правильна потому что
                                                                   //  у меня  id  в  промежуточной  таблице 
          })


Пример таблиц

мне нужно примерно так
таблица товары
$products = [
    'item_1' => [
        'id' => 1,
        'name' => 'product_1',
        'size' => 'S'
    ],
    'item_2' => [
        'id' => 2,
        'name' => 'product_2',
        'size' => 'XL',
    ],
    'item_3' => [
        'id' => 3,
        'name' => 'product_3',
        'size' => 'S',
    ],
    'item_4' => [
        'id' => 3,
        'name' => 'product_5',
        'size' => 'L',
    ],
];


таблица размеры
$sizes = [
    'size' => [
        'id' => 1,
        'name' => 'S',
    ],
    'size_2' => [
        'id' => 2,
        'name' => 'L',
    ],
    'size_3' => [
        'id' => 3,
        'name' => 'XL',
    ],

];


$prosuct_size = [
    'id' => [
        'product_id' => 1,
        'size_id' => 1,
    ],
'id' => [
        'product_id' => 3,
        'size_id' => 1,
    ],
'id' => [
        'product_id' => 4,
        'size_id' => 2,
    ],

]


это примерно
сделаны checkbox из которых приходят id.
<div class="size">
    <input type="checkbox" name="size" value="size[i][id]">
    <button>click</button>
</div>

Как можно если выбрать например два или три checkbox, вывести товар который принадлежит этому размеру????
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 1
@the5x
Вы можете делать orderBy прямо в моделе, где у вас отношения belongsTo()->orderBy()
Ответ написан
Ваш ответ на вопрос

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

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