Проблема с Laravel Lazy Eager Загрузка - PullRequest
0 голосов
/ 18 ноября 2018

У меня проблема с получением данных из базы данных на основе отношений hasMany и отправкой их в api в Larave.Ниже кода Laravel не дает мне продукт клиента, где идентификатор клиента = $ идентификатор.Я не знаю почему, я не могу отправить $ id рядом с $ query.Если я напишу число в '', у меня есть хороший ответ, но мне нужно принять его автоматически.

$products = Product::where('name', 'like', '%'.$request->q.'%')->orWhere('symbol', 'like', '%'.$request->q.'%')->with(['customers' => function ($query, $id) {
    $query->where('id', '=', $id);
}])->get();

весь код API

Route::get('/customer/{id}/products', function(Request $request, $id){
   $customer = Customer::findOrFail($id);
   $products = Product::where('name', 'like', '%'.$request->q.'%')->orWhere('symbol', 'like', '%'.$request->q.'%')->with(['customers' => function ($query, $id) {
       $query->where('id', '=', $id);
   }])->get();

   return $products;
});

Заранее спасибо.

1 Ответ

0 голосов
/ 18 ноября 2018

Если вы хотите использовать переменную в методе with, вам нужно набрать use($id) после function($query), как показано в этом коде ниже.

$products = Product::where('name','like','%'.$request->q.'%')
    ->orWhere('symbol', 'like', '%'.$request->q.'%')
    ->with(['customers' => function ($query) use($id) {
         $query->where('id', '=', $id);
    }])->get();

Если вам нужно найти продукт с этими условиями клиента вы можете использовать функцию whereHas.Проверьте это сообщение для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...