【发布时间】:2019-03-07 21:11:55
【问题描述】:
我正在使用 Laravel 和 AngularJS 创建一个系统,我将任务分配给用户。多个任务有多个用户,反之亦然。在数据库中,我有这个表:
任务: 编号 |名字
task_users: 编号 |任务ID | user_id
用户: 编号 |名字
在我看来,我使用任务表的 id 来显示一个特定的任务。我显示未分配给该特定任务的用户列表(称为未分配用户)。分配该用户后,其名称将从列表中删除。
为了实现这一点,我使用了这个查询:
public static function remainingUser($task_id)
{
return \DB::table('users')
->leftjoin('task_users', 'task_users.user_id', '=', 'users.id')
->select('users.id',
'users.name as name'
)
->where('task_id', '!=', $task_id)
->orWhere('task_id', null)
->get();
}
假设我有这些数据
任务:
标识 |名字
1 |任务1
2 |任务2
3 |任务3
用户:
标识 |名字
1 |用户1
2 |用户2
3 |用户3
4 |用户4
5 |用户5
6 |用户6
7 |用户7
8 |用户8
9 |用户9
10 |用户10
task_users:
标识 |任务ID | user_id
1 | 1 | 1
1 | 1 | 2
1 | 1 | 3
1 | 1 | 5
1 | 1 | 6
1 | 1 | 7
1 | 2 | 2
1 | 2 | 4
现在假设我正在显示 task_id = 1 的任务详细信息,并且我想将用户 4 分配给此任务。所以我的未分配用户列表应该包含所有未分配此任务的用户。我的查询没有返回所需的数据。我还在 where 子句中尝试了不同的条件,但我没有得到正确的所需数据。我做错了什么?
【问题讨论】:
-
检查this问题/答案。如果你有很好的模型、表格和关系,那就是答案。
标签: mysql database laravel where-clause