首页 文章

Laravel多对多关系查询

提问于
浏览
0

我正在构建一个带有用户表和活动表的Laravel应用程序,以及使用名为assignments的数据透视表实现的活动和用户之间的多对多关系:

  • 用户:id,...

  • 活动:id,...

  • 赋值:id,activity_id,user_id,...

我需要记录用户每次完成活动的时间 . 用户可以多次完成相同的活动 . 我试图决定在数据库中建模的最佳方法 . 我可以看到的选项是:

  • 表完成次数:id,assignment_id,...

  • 第二个数据透视表完成:id,activity_id,user_id,...

我可以创建迁移等 . 但是我正在努力使用Model类及其关系方法 . 特别是,对于上面的第一个选项,我如何定义所需的Model类和关系方法?

2 回答

  • 1

    好吧,除了活动跟踪之外,你几乎可以排序 . 所以,这就是我的建议:

    用户表

    列ID,姓名,电子邮件等

    活动表

    列id,名称等

    user_activity表(数据透视)

    with column id,user_id,activity_id等 . 此表将包含用户和活动之间的多对多映射 .

    activity_tracking

    使用列id,user_activity_id,status,updated_at等这里你可以使用一个整数值来表示完成让我们说1.并且使用updated_at和created_at你可以跟踪活动的开始和完成时间 .

  • 0

    创建 activity_user 表,只需添加 activity_iduser_id . id列不需要这个 . 然后将此代码添加到用户模型:

    public function activity()
    {
        return $this->belongsToMany('App\Activity', 'activity_user', 'user_id', 'activity_id');
    }
    

    如果我理解正确,则不需要任何其他内容 .

相关问题