Как с, где операторы работают в Laravel?

Как красноречивые операторы with, where работают в Laravel?

Можно ли увидеть результат построения SQL-запроса после использования with, where или этих операторов, применяемых только для модели данных результата?

Оператор with(<related model>) работает как INNER JOIN?

Где найти информацию об этом?

Попробуйте использовать хороший идеал, например PHPStorm, и следуйте этому методу, чтобы понять, как он работает.

Elias Soares 14.11.2018 01:52
Стоит ли изучать 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-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
1
195
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

Чтобы узнать 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 для дампа запроса

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