列表项
我需要从一个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的任务未分配。我是新手。 预先感谢...
答案 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();