Orm 雄辩/Laravel三方多对多关系

Orm 雄辩/Laravel三方多对多关系,orm,laravel,eloquent,Orm,Laravel,Eloquent,我对Laravel是个新手,口才很好(一般来说,我对ORM的经验很少) 假设我有三个数据库表: 小部件 行动 使用者 我对一个包含以下列的连接表进行了建模: widget\u id action\u id user\u id 时间戳 连接点是保存交互日志——每当用户在小部件上执行操作时,都需要一个时间戳。我看到了如何使用Elount来模拟一个简单的多对多关系,并使其正常工作,但我不确定如何模拟一个更复杂的三方关系 就这一点而言,即使我有一个简单的多对多关系(比如说widget到action,因此

我对Laravel是个新手,口才很好(一般来说,我对ORM的经验很少)

假设我有三个数据库表:

  • 小部件
  • 行动
  • 使用者
  • 我对一个包含以下列的连接表进行了建模:

  • widget\u id
  • action\u id
  • user\u id
  • 时间戳
  • 连接点是保存交互日志——每当
    用户
    小部件
    上执行
    操作
    时,都需要一个时间戳。我看到了如何使用Elount来模拟一个简单的多对多关系,并使其正常工作,但我不确定如何模拟一个更复杂的三方关系

    就这一点而言,即使我有一个简单的多对多关系(比如说
    widget
    action
    ,因此会有一个名为
    action\u widget
    )的表),我如何在Elounting中为
    action\u widget
    表添加一个显式模型,以便跟踪关于每个关系的额外数据(例如,时间戳、注释字段等)或者,我是不是完全错了


    作为ORM的新手,我觉得自己只能做些什么!这种感觉消失了吗?:p

    Laravel可以自动创建中间模型。它们被称为“透视表”


    我建议你阅读。

    当你有像CategotyArticle这样的双向关系时,pivot工作得很好。 但是如果你有三方关系,我认为最好有一个叫做WidgetUserAction的模型


    编辑:对于这些情况,新的“hasManyThrough”很好。

    我已经考虑过这个问题,我认为Mild的答案更适合我的情况。是否还有其他理由使用透视表方法?不太可能,我还没有尝试过。中间表的自定义模型听起来是个好主意。谢谢,使用自定义模型显然是最好的解决方案。您能解释一下吗有一点关于你将如何处理这个问题?我面临一个类似的问题,但我对Eloquent了解不够,无法遵循它,文档也不够好。hasManyThrough不适用于这种情况。因为hasManyThrough不返回关系,只返回第三个属性的值。