Как выбрать запись из таблицы, чей идентификатор отсутствует в другой таблице, используя модель Laravel? - PullRequest
1 голос
/ 17 июня 2019

Элемент списка

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

Task::join('events','events.task_id' ,'=','tasks.id')
        ->where('events.event_type','=','Task')
        ->where('events.task_stage','!=','assigned')->select('tasks.*');

, но я не думаю, что это правильный путь.

Например:

+-------------------------+   +-------------------------+
| tasks                   |   | Events                  |
+----------+--------------+   +-------------------------+
| id       |  name        |   | task_id  |  task_stage  |
| 1        |  Task1       |   | 1        |  'assigned'   |
| 2        |  Task2       |   | 2        |  'created'   |
+----------+--------------+    +----------+--------------+

Результат должен быть:

Задача с идентификатором 2, которая только создана, не назначена.Я новичок в запросах.Заранее спасибо ...

1 Ответ

1 голос
/ 17 июня 2019

Передайте Closure в качестве второго аргумента в метод join.Closure получит объект JoinClause, который позволяет указать ограничения для предложения join:

Task::join('events', function ($join) {
    $join->on('events.task_id', '=', 'tasks.id')
        ->where('events.event_type', '=', 'Task')
        ->where('events.task_stage', '!=', 'assigned');
})->select('tasks.*')->get();

Документация

...