@NikSIk31

Laravel запрос с with и where?

А как можно было бы получить данные при: есть order и он имеет много offers, надо получить все order со статусом search и если он имеет offers с user_id == Auth::id() . Это вроде как нельзя просто так сделать через where и with
$orders = Order::where('status', 'search')
            ->with([
                'offers' => function ($q) {
                    $q->where('user_id', Auth()->id())->first();
                }
            ])->get();

получается order нужный, а offers либо пуст, либо в нем есть один offer (нужный) . И выходит, что еще раз один where надо сделать уже отдельно с проверной на не null в offers для каждого order??
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
vfreelancer
@vfreelancer
php
гуглите whereHas
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@GssGenic
Программист со стажем более 20 лет.
Я бы использовал ::where(....)->joinLeft(....)->select('orders.*' , 'offers.* as offer')->get();
select нужен чтобы id поле offers не заменило поле id таблицы orders
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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