Я делаю запрос Laravel, чтобы запросить список элементов, у которых его отношение больше 0.
Концерты в таблице:
| ID | NAME |
|----|-----------|
| 1 | Concert A |
| 2 | Concert B |
| 3 | Concert C |
И таблица Position.
| ID | concert_id | user_id | Content |
|----|----------------|------------|----------|
| 1 | 1 | 1 | xxx |
| 2 | 1 | 2 | yyy |
| 3 | 3 | 1 | zzz |
| 4 | 3 | 2 | www |
| 5 | 1 | 3 | xyx |
| 6 | 3 | 3 | rer |
Запрос, который мне нужно сделать, - получить концерты, в которых их позиция в контенте имеет значение типа $some_query$
.
Код, который я имею в виду:
$result = $this->model->whereHas('positions')
->with(['positions' => function ($query) {
$query->where('content', 'like', "%{$content}%");
}])->get();
Но, насколько я могу судить, это принесет все концерты, а также только те позиции, которые имеют желаемое содержание.
Так что у меня две проблемыВо-первых, мне нужно получить концерты, в которых его запрашиваемые позиции больше 0. А во-вторых, мне также нужно собрать все позиции, не только запрашиваемые.По сути, запрос - это просто способ узнать, какие концерты мне нужно принести.
Можно ли добиться этого за один запрос?