如何使用 Laravel 模型 select 从另一个 table 中不存在 ID 的 table 进行记录?

How to select record from table whose id is not there in another table using Laravel model?

列表项

我需要 select 来自 table 的数据,其 ID 不存在于另一个 table 中,或者如果存在则检查其他条件。我可以通过

实现
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'   |
+----------+--------------+    +----------+--------------+

结果应该是:

id 为 2 的任务,仅创建未分配。我是查询的新手。 提前致谢...

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();

Documentation