Извлекать записи из отношений с ограничением запроса
Я пытаюсь получить все записи из моего 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 за помощь!