首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一对多的关系行不通

一对多的关系行不通
EN

Stack Overflow用户
提问于 2016-03-06 18:59:47
回答 4查看 127关注 0票数 1

我正试图建立一对多的关系与2种模式,UserRole。因此,我希望一个User只能有一个角色,并且Role可以分配给多个User。我试着学习关于https://laravel.com/docs/5.1/eloquent-relationships#one-to-many的官方教程,最后得到了以下内容:

代码语言:javascript
复制
class User extends Model 
{
    public function role()
    {
        return $this->belongsToMany('App\Admin\Role');
    }
}

class Role extends Model
{

    protected $table = 'roles';

    public function users()
    {
        return $this->hasMany('App\Admin\User');
    }

}

基于这个链接,我认为RolePost是一样的,一个Role可以分配给多个User。但是,这不太有效,下面是我如何尝试访问特定User的角色名称

代码语言:javascript
复制
$role_first = $user->role; // Eloquent\Collection
$role_second = $user->role(); // Eloquent\Relations\BelongsToMany

$role_first->role_title // 'Undefined property: Illuminate\Database\Eloquent\Collection::$role_title'
$role_second->role_title // exception 'ErrorException' with message 'Undefined property: Illuminate\Database\Eloquent\Relations\BelongsToMany::$role_title'

这里到底出了什么问题?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-06 19:10:22

User类中

代码语言:javascript
复制
public function role()
{
    // not $this->belongsToMany('App\Admin\Role');
    return $this->belongsTo('App\Admin\Role');
}

因为你想要的是oneToMany而不是manyToMany关系。

票数 2
EN

Stack Overflow用户

发布于 2016-03-06 19:15:42

这样就行了。请试试看

代码语言:javascript
复制
class User extends Model 
{
    public function role()
    {
        return $this->hasOne(App\Admin\Role::class);
    }
}

// user belongs to one role
class Role extends Model
{

    protected $table = 'roles';

    public function users()
    {
        return $this->belongsTo(App\Admin\User::class);
    }

}
票数 0
EN

Stack Overflow用户

发布于 2016-03-06 19:57:35

用户模型

代码语言:javascript
复制
class User extends Authenticatable{

  public function roles(){
    return $this->belongsTo('App\Admin\Role');
  }
   }

角色模型

代码语言:javascript
复制
    class Role extends Model{

     public function users(){
       return $this->hasMany('App\Admin\User');
     }
      }

用户只能有一个角色,该角色可以分配给许多用户。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35831139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档