如何使用 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();
列表项
我需要 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();