Проблема с Laravel Lazy Eager Loading

У меня проблема с получением данных из базы данных на основе отношений hasMany и отправкой их в api в Larave. Ниже кода Laravel не дает мне продукт клиента, где идентификатор клиента = $ id. Не знаю почему, я не могу отправить $ 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;
});

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите использовать переменную внутри метода 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. Проверьте этот Почта для получения дополнительной информации.

Ничего особенного. Просто примите ответ, чтобы другие могли увидеть результат. Спасибо

diakosavvasn 18.11.2018 14:04

Хорошо, я новичок, поэтому я не знал о accept, извините.

azbroja 19.11.2018 17:49

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