【问题标题】:Laravel 8 Relationship - Many to Many Best wayLaravel 8 关系 - 多对多最佳方式
【发布时间】:2021-11-02 07:39:22
【问题描述】:

我处于一种奇怪的情况,我不清楚我应该如何定义模型之间的关系。我想知道专家对我应该如何设计这种关系的意见。

假设我有 3 张桌子:

  1. 用户(ID、姓名、电子邮件、密码...等)
  2. 标签(id、user_id、name、created_at...等)
  3. 联系人(身份证、姓名、电子邮件、出生日期、电话...等)

一个用户可以有很多标签($this->hasMany(Tag::class) - 一对多关系,对吧?)
标签属于用户($this->belongsTo(User::class) - 属于关系,对吗?)

一个用户有很多联系人并且联系人属于很多用户(多对多关系,对吗?)。

这里我想我需要另一个中间表contact_user

一个标签可以有很多联系人,而联系人也可以有很多标签(同样,多对多关系?)。
在这里,我需要一个中间表contact_tag

现在,我的疑问是……这是使用 contact_usercontact_tag 表创建关系的最佳方法吗?

我要访问

  1. users()->contacts()
  2. 标签()->联系人()
  3. Users()->tags()

但在未来(以防万一,如果我可能需要它),我可能想要访问类似的关系。

  1. 联系人()->用户()
  2. 联系人()->标签()

请给我你的意见,假设以上 3 个表,你将如何设计你的关系并访问我在最后提到的关系?

或者您认为我创建contact_usercontact_tag 表的方法是访问关系背后数据的一种很好且有效的方法?

【问题讨论】:

    标签: laravel many-to-many eloquent-relationship


    【解决方案1】:

    嗯...最好的方法是拥有拖曳类型的关系...

    第一个用户和联系人拥有“Many To Many (Polymorphic) " 带标签,

    和用户有“many to many”关系;

    我认为这是最简单明了的选项;

    【讨论】:

    • 请务必阅读 laravel 的官方文档;
    • 多对多多态关系在这里不适用。我已经阅读了很多文档,并且知道我需要的内容并没有涵盖其中。请再看看我的问题,看看我想要什么。用户有很多标签,用户有很多联系人,联系人由用户标记。标签属于用户,标签有很多联系人。
    猜你喜欢
    • 1970-01-01
    • 2021-08-21
    • 2021-03-01
    • 1970-01-01
    • 2020-05-22
    • 2014-11-25
    • 2014-09-25
    • 2021-11-18
    • 1970-01-01
    相关资源
    最近更新 更多