【问题标题】:Can Laravel models be MULTIPLE polymorphic types?Laravel 模型可以是 MULTIPLE 多态类型吗?
【发布时间】:2019-01-10 09:29:48
【问题描述】:

如果user 表具有如下多态关系:

用户: - id - userable_id _ userable_type

用户类型可以是: - App\Student - App\Teacher

问题:我们如何处理既可以是学生又可以是教师的用户?如果一位老师决定向另一位老师上课(可能是不同的主题),就会发生这种情况。我们需要为该用户存储与教师和学生相关的唯一信息。

也许这是我们只在用户表中添加(可为空的)teacher_id 和(可为空的)student_id 列的情况?

谢谢,

【问题讨论】:

  • teacher_id 和 student_id 是处理此问题的一种方法,如果您没有预见到任何其他其他用户类型,这可能是最好的方法。如果我只有两个公司类型,我可能不会使用多态性,但如果类型可以在未来扩展:laravel.com/docs/5.6/…
  • 编辑:多对多多态...当然!我想我现在会坚持使用teacher_id 和student_id。其他类型更像是不需要唯一信息的角色(管理员等)。感谢您的快速回复,德文郡!

标签: database laravel laravel-5 polymorphism


【解决方案1】:

一篇关于多态的好文章是https://hashrocket.com/blog/posts/modeling-polymorphic-associations-in-a-relational-database

使用teacher_id 和student_id 是处理此问题的一种方法,如果您没有预见到其他用户类型,这可能是最好的方法。这种类型的关系称为独占关系。它是可扩展的,但每种类型都需要一个额外的列。

Laravel 使用多态连接类型的关系。它可以轻松扩展和处理多种类型,但缺乏一些参照完整性。如果将来类型可以扩展,并且用户可以属于多种类型,那么您需要多对多的多态关系:https://laravel.com/docs/5.6/eloquent-relationships#many-to-many-polymorphic-relations

如果我只有两种公司类型,我可能不会使用多态连接。我会依赖第一种方法(Exclusive Belongs To)并为每种类型使用独立的关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 2017-03-07
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多