首页 > 解决方案 > Laravel 多对多关系查询

问题描述

我正在构建一个 Laravel 应用程序,其中包含一个用户表和一个活动表,以及活动和用户之间的多对多关系,这些关系是通过一个名为 assignments 的数据透视表实现的:

我需要记录用户每次完成活动的时间。一个用户可以多次完成相同的活动。我正在尝试确定在数据库中对此进行建模的最佳方法。据我所知,选项是:

  1. 一个表完成:id,assignment_id,...
  2. 第二个数据透视表完成:id,activity_id,user_id,...

我可以创建迁移等。但是我在模型类及其关系方法上苦苦挣扎。特别是,对于上面的第一个选项,我将如何定义所需的模型类和关系方法?

标签: laraveleloquentmany-to-many

解决方案


好吧,除了活动跟踪之外,您几乎已经对所有内容进行了排序。所以,这就是我的建议:

用户表

包含 id、name、email 等列

活动表

列 id、name 等

user_activity 表(数据透视表)

包含 id、user_id、activity_id 等列 此表将包含用户和活动之间的多对多映射。

活动跟踪

使用列 id、user_activity_id、status、updated_at 等在这里您可以使用一个整数值作为 status 来表示完成,比如说 1。使用 updated_at 和 created_at 您可以跟踪活动开始和完成时间。


推荐阅读