#laravel
Вопрос:
Я получил ошибку с моим запросом, похоже, что моя Request $request
переменная не может использоваться внутри приведенного function($quer){$query->}
ниже примера моего кода.
Table1::addSelect(['PaymentStatus' => Table2::selectRaw('COUNT(*)')
->whereColumn('AccountNumber','Table1.AccountNumber')
->whereColumn('ServicePeriodEnd','Table1.ServicePeriodEnd')
])->whereNotExists(function($query){
$query->select(DB::raw('*'))
->from('Table2')
->whereRaw('Table1.AccountNumber = Table2.AccountNumber')
->whereRaw('Table1.ServicePeriodEnd = Table2.ServicePeriodEnd')
->where('AccountNumber', $request->AccountNum); // this part gives an Undefined Variable: request
})->where('AccountNumber', $request->AccountNum)
->orderBy('ServicePeriodEnd','desc')
->get();
Ответ №1:
Переменная $request не может быть прочитана из функции из-за того, что она не была объявлена для использования в функции. Замените эту строку:
])->whereNotExists(function($query){
С этой строкой
])->whereNotExists(function($query) use ($request) {
Кстати, это относительно новый синтаксис. Пример можно найти по адресу https://www.php.net/manual/en/functions.anonymous.php
Комментарии:
1. ах да , я забыл добавить
use ($request)
, Спасибо за это!
Ответ №2:
Используйте запрос use ($request)
в запросе функции обратного вызова
->whereNotExists(function($query) use ($request) {
Table1::addSelect(['PaymentStatus' => Table2::selectRaw('COUNT(*)')
->whereColumn('AccountNumber','Table1.AccountNumber')
->whereColumn('ServicePeriodEnd','Table1.ServicePeriodEnd')
])->whereNotExists(function($query) use ($request) {
$query->select(DB::raw('*'))
->from('Table2')
->whereRaw('Table1.AccountNumber = Table2.AccountNumber')
->whereRaw('Table1.ServicePeriodEnd = Table2.ServicePeriodEnd')
->where('AccountNumber', $request->AccountNum); // this part gives an Undefined Variable: request
})->where('AccountNumber', $request->AccountNum)
->orderBy('ServicePeriodEnd','desc')
->get();
Комментарии:
1. Я действительно забыл добавить
use request
. кстати, спасибо!