我有 3 个关系:
project
可以有很多tasks
而tast
有一个project
user
可以有很多 tasks
而 task
可以有很多 users
user
可以有很多 projects
而 project
可以有很多 users
--> 这个关系我已经有了在数据透视表 project_user
其他表应该是什么样子,我如何查询它们以获取当前登录用户和某些项目 ID 的所有任务
?
最佳答案
表任务应该有“外键”project_id。然后您可以找到与一个项目关联的所有任务。
你应该有一个用于链接用户和任务的表,比如 user_task 有两个字段:user_id/task_id
您已经有了最后一部分的 project_user。
查询它们: 获取所有项目任务
SELECT * FROM task WHERE project_id = {project_id}
获取用户的所有任务:
SELECT DISTINCT task.*
FROM user_task
INNER JOIN task ON task.id = user_task.task_id
WHERE user_task.user_id = {user_id}
获取用户和项目id的所有任务
SELECT DISTINCT task.*
FROM user_task
INNER JOIN task ON (task.id = user_task.task_id AND project_id = {project_id})
WHERE user_task.user_id = {user_id}
Eloquent :
DB::table('user_task')
->join('task', function($join)
{
$join->on('task.id', '=', 'user_task.task_id')->where('project_id', '=', {project_id})
})
->where('user_task.user_id', '=', {user_id})
->get();
关于mysql - 3 关系数据库应该如何看待以及如何使用 Laravel Eloquent 创建查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33456389/