mysql - 3 关系数据库应该如何看待以及如何使用 Laravel Eloquent 创建查询?

标签 mysql database laravel database-design laravel-5

我有 3 个关系:

project 可以有很多taskstast 有一个project

user 可以有很多 taskstask 可以有很多 users

user 可以有很多 projectsproject 可以有很多 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/

相关文章:

Mysql更改信息schema的列排序规则和字符集

database - 如何将 Drupal 数据迁移到 Django?

laravel - 数据在 Laravel session 中持续多长时间?

php - Laravel 启动函数不从命名空间内部调用

mysql - 尝试设计一个在线学生练习数据库

mysql - 如何编写查询以接受搜索框的输入并从 MySql db (Wordpress) 进行搜索

mysql - 如何实现大规模更新查询,将 n 天添加到 DateTime 字段的日期部分?

数据库优化 - 将每一天存储在不同的列中以减少行数

php - 使用 htaccess 在共享主机中将网站 http 重定向到 Laravel 中的 https

php - 带有 form_helper 输入的 Codeigniter 下拉表单是索引/键而不是所选的值