Как красноречивые операторы with, where работают в Laravel?
Можно ли увидеть результат построения SQL-запроса после использования with, where или этих операторов, применяемых только для модели данных результата?
Оператор with(<related model>) работает как INNER JOIN?
Где найти информацию об этом?






Чтобы узнать SQL-запрос, который выполняет Laravel, вы можете использовать функцию toSql():
$results = User::where(function($q) use ($request) {
$q->orWhere('email', 'like', '%[email protected]%');
$q->orWhere('first_name', 'like', '%John%');
$q->orWhere('last_name', 'like', '%Doe%');
})->toSql();
dd($results); // output
Проверьте этот статья для получения дополнительной информации об этом аспекте. В этом подходе есть еще один альтернатива.
Что касается вашего следующего вопроса: Нет, Laravel не поддерживает JOIN. Вы можете немного прочитать об этом в эта статья.
PD: Если вы хотите узнать больше о том, как работает Eloquent, вы можете подписаться на этот хороший Ларакасты серии.
Поскольку использование with() приведет к запуску нескольких операторов SQL, хороший способ понять лежащий в основе SQL - это использовать DB::enableQueryLog() и DB::getQueryLog().
В соответствии с приведенным выше SQL вы хотите найти Продукт с именем $needle или именем производителя $needle. Думаю, вам нужен метод whereHas.
$products = Product::with("manufacturer")
->whereHas('manufacturer',function($query) use ($needle){
$query->where("name","like","%{$needle}%");
})
->orWhere("name","like","%{$needle}%")->get();
Вы также можете добавить его к методу with с тем же условием запроса, чтобы получить соответствующий экземпляр отношения. В случае ownTo вы можете использовать его без указания условия.
Проверьте отношения запросов: https://laravel.com/docs/5.5/eloquent-relationships#querying-relations
Есть два способа получить подробную информацию о том, в каком состоянии и где: - используйте панель отладки Laravel в среде разработки, чтобы увидеть подробную информацию о запросах. Какая структура, частота запросов и т. д. - Используйте функцию toSql для дампа запроса
Попробуйте использовать хороший идеал, например PHPStorm, и следуйте этому методу, чтобы понять, как он работает.