【问题标题】:Self joins and eloquent自连接和雄辩
【发布时间】:2018-09-15 03:45:33
【问题描述】:

我有一个包含所有用户的用户表。我的应用程序允许父母和他们的孩子通过他们自己的电子邮件地址,但我需要能够说“孩子 1,与父母 1 和父母 2 相关”我想将所有这些存储在同一张表中,看起来像这是一种多对多关系,因为许多用户可以属于任意数量的其他用户。

如何用 eloquent 表示内部的多对多关系?

我的尝试只打到了网。

【问题讨论】:

    标签: php laravel-5 eloquent


    【解决方案1】:

    我认为你会以与任何其他多对多关系相同的方式来表示这一点;唯一的区别是同一个User 模型同时拥有默认和反向关系:

    public function parents(){
       return $this->belongsToMany(User::class, "users_users", "user_id", "parent_id");
    }
    
    public function children(){
        return $this->belongsToMany(User::class, "users_users", "parent_id", "user_id");
    }
    

    注意:我可能有 user_idparent_id 倒退,但可以轻松调整。

    我能看到的唯一问题是尝试递归地获取孩子的孩子,如果这是一个问题,否则,这应该适用于基本的多对多。

    【讨论】:

    • 所以我需要一个 users_users 数据透视表?
    • 是的 :) 就像任何many-to-many 一样,您需要一个数据透视表,所以users_users,至少有parent_iduser_id
    猜你喜欢
    • 2014-07-01
    • 2020-11-16
    • 1970-01-01
    • 2018-06-03
    • 2019-06-09
    • 1970-01-01
    • 2018-06-02
    • 2021-09-15
    • 1970-01-01
    相关资源
    最近更新 更多