首页 文章

多对多的关系

提问于
浏览
0

我已经阅读了关于人际关系的文档,并提出了一些问题 .

我有一个用户和一个角色表 . 这种关系很多很多 . 用户具有许多角色,角色可以属于许多用户 . 所以我设置了一个数据透视表,并在每个模型中使用了belongsToMany . 但肯定是用户 hasMany 角色和角色 belongsToMany 用户 .

但是当我使用hasMany时,我的查询无法按预期工作 . 这只是一个措辞,两者都应该属于MajorMany吗?

我还想知道在每个模型上定义关系 - 你需要或者只能在用户上定义吗?

2 回答

  • 1

    hasMany 关系用于定义一对多关系,这就是为什么它会破坏您的查询 .

    我可以看出为什么你在思考一个有很多角色的用户,但是说一个用户属于很多角色并且角色属于很多用户也是非常好的英语 .

    如果您只想查询一个模型及其关系,则无需在两个模型上定义关系 . 但是你能否明确地说你永远不需要查询角色关系?

  • 1

    我建议你,研究这个描述:http://scotch.io/tutorials/php/a-guide-to-using-eloquent-orm-in-laravel

    它对你有用 .

    (在没有“hasMany”的情况下,每个模型中只应使用“belongsToMany”)

    用户模型:

    // app/models/User.php
    <?php
    
    class User extends Eloquent {
    
        // each user BELONGS to many role
        // define our pivot table also
        public function roles() {
            return $this->belongsToMany('Role', 'users_roles', 'user_id', 'role_id');
        }
    
    }
    

    榜样:

    // app/models/Role.php
    <?php
    
    class Role extends Eloquent {
    
        // DEFINE RELATIONSHIPS --------------------------------------------------
        // define a many to many relationship
        // also call the linking table
        public function users() {
            return $this->belongsToMany('User', 'users_roles', 'role_id', 'user_id');
        }
    
    }
    

相关问题