Извлекать записи из отношений с ограничением запроса

Я пытаюсь получить все записи из моего orders таблица, в которой заказ связан с supervisor, Orders а также Supervisors связаны с belongsToMany отношения и есть сводная таблица.

Итак, мой код выглядит примерно так:

$supervisor = User::where('phone_number', $request->msisdn)->first();
            $orders = Order::with(['supervisors' => function ($query) {
                $query->where('supervisor_id', $supervisor->id);
            }])->get();

Я ожидаю получить коллекцию заказов, которую затем передаю в уведомление, но вместо этого получаю:

[2017-12-12 14:25:27] local.ERROR: Undefined variable: supervisor   

{"exception":"[object] (ErrorException(code: 0): Undefined variable: supervisor 

Не уверен, что я делаю не так?

2 ответа

Решение

Вы должны использовать USE для передачи $supervisor в функцию

$orders = Order::with(['supervisors' => function ($query) use($supervisor) {
                $query->where('supervisor_id', $supervisor->id);
            }])->get();

Для тех, кто ищет что-то подобное, я использовал это, и это сработало:

$supervisor = User::where('phone_number', $request->msisdn)->first();
            $orders = Order::whereHas('supervisors', function ($query) use($supervisor) { 
                $query->where('supervisor_id', $supervisor->id); 
            })->where('status', '=', 'pending')->get();

Большое спасибо p.wright за помощь!

Другие вопросы по тегам