У меня есть две таблицы. У частей есть много предложений.
Мне нужно, чтобы все части были отсортированы по наибольшей цене или количеству предложений, где цена предложения> 0 и количество предложений> 0.
Цена и количество рассчитываются в полях.
Как этого добиться?
Я пытался
Part::
addSelect([
'quantity' => Offer::select('quantity')
->orderBy('quantity', 'desc')
->whereColumn('part_id', 'parts.id')
->limit(1)
])
->orderBy('quantity', 'desc')
->paginate(3)
Но таким образом я не могу фильтровать детали по количеству> 0 и цене> 0
Также так как количество вычисляется в поле, когда я делаю это
->addSelect([
'qty' => Offer::select(['quantity * 2 as qty'])
->orderBy('qty', 'asc')
->whereColumn('part_id', 'parts.id')
->limit(1)
])
Я получаю ссылку 'Кол-во' не поддерживается ошибка
Дополнительные пояснения:
Каждая часть имеет много предложений. Каждое предложение имеет много отгрузок. Предложения
available_quantity = quantity - sum of shipped quantities
Мне нужно показать детали, где available_quantity> 0, и отсортировать запчасти по available_quantity