如何使用Laravel模型从另一个表中没有ID的表中选择记录?

时间:2019-06-17 06:47:12

标签: mysql laravel laravel-query-builder

列表项

我需要从一个ID不在另一个表中存在的表中选择数据,或者如果存在则请检查其他条件。我可以通过

实现
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的任务未分配。我是新手。 预先感谢...

1 个答案:

答案 0 :(得分:1)

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