Как работает whereHas в Laravel?

Как работает whereHas в Laravel в таком примере:

$orders = OrderModel::whereHas('User', function ($query) {
            if ($request->has('term')) {
                $query->where('LastName', 'like', $request->term);
            }
        });


Сколько запросов построит Laravel, если выполнится условие $query->where() и какой запрос построится в противном случае?

И возможно ли динамическое создание запроса, основываясь на входных данных, что-то в этом роде:

$query = "SELECT * FROM TABLE";

if ($request->data) {
  $query+= " lEFT JOIN TABLE 2 ON..."
}
  • Вопрос задан
  • 2274 просмотра
Решения вопроса 1
mashletov
@mashletov
Math.random()
Как работает whereHas в Laravel?

Просто whereHas:
select * from `orders` where (exists (select * from `users` where users.id = orders.user_id))

Если добавить ещё with:
select * from `users` where id in (user_id из первого запроса)

И возможно ли динамическое создание запроса, основываясь на входных данных, что-то в этом роде:

Отличная статья
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
rul22rus
@rul22rus
Frontend&Backend Web Developer
За месте ->get() или ->first() можно вызвать ->toSql() оно покажет шаблон текущего запроса
Ответ написан
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Сколько запросов построит Laravel, если выполнится условие $query->where() и какой запрос построится в противном случае?
Это легко можно узнать из логов БД или отладочной панели для Laravel.

И возможно ли динамическое создание запроса, основываясь на входных данных, что-то в этом роде:
Возможно. А что Вам мешает строить подобного рода запросы?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы