Как с тем, где операторы работают в Laravel? - PullRequest
0 голосов
/ 14 ноября 2018

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

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

Работает ли оператор with(<related model>) как ВНУТРЕННЕЕ СОЕДИНЕНИЕ?

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

Ответы [ 4 ]

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

Существует два способа получить подробную информацию о состоянии и месте: - использовать панель отладки Laravel в среде разработки, чтобы увидеть подробную информацию о запросах. Какова структура, частоты запросов и т. Д. - Используйте функцию toSql для вывода запроса

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

Поскольку использование with() приведет к выполнению нескольких операторов SQL, хорошим способом понять базовый SQL является использование DB::enableQueryLog() и DB::getQueryLog().

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

В соответствии с 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» с тем же условием запроса, чтобы получить экземпляр отношения, которому он соответствует.В случае если вы принадлежите, вы можете использовать его без указания условия.

Проверьте отношения запроса: https://laravel.com/docs/5.5/eloquent-relationships#querying-relations

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

Чтобы узнать SQL-запрос, который выполняет Laravel, вы можете использовать функцию toSql():

$results = User::where(function($q) use ($request) {
    $q->orWhere('email', 'like', '%john@example.org%');
    $q->orWhere('first_name', 'like', '%John%');
    $q->orWhere('last_name', 'like', '%Doe%');
})->toSql();

dd($results); // output

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

По поводу вашего следующего вопроса: Нет , Laravel не делает JOIN с.Вы можете прочитать немного об этом в этой статье .


PD: Если вы хотите узнать больше о том, как работает Eloquent, вы можете следовать этим хорошим Laracastsсерия .

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