【问题标题】:A many to many relationship多对多关系
【发布时间】:2014-10-11 03:33:49
【问题描述】:

我已阅读有关关系的文档并有一些问题。

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

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

我还想知道如何定义每个模型上的关系 - 你需要还是可以只在用户上定义?

【问题讨论】:

    标签: laravel laravel-4 eloquent


    【解决方案1】:

    hasMany 关系用于定义一对多关系,这就是它会破坏您的查询的原因。

    我明白您为什么会按照用户拥有多个角色的思路来思考,但是说一个用户属于多个角色并且一个角色属于多个用户也是非常好的英语。

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

    【讨论】:

      【解决方案2】:

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

      对你有用。

      (您应该在每个模型中只使用“belongToMany”而不使用“hasMany”)

      用户模型:

      // 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');
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 2018-06-15
        相关资源
        最近更新 更多