2014-09-25 121 views
0

表1(用户):laravel一对一或一对多的关系?

id username password role created_at updated_at 

1  jhon  yz  1 sometime  sometime 

表2(角色):

id  role  created_at updated_at 

1 employee  sometime sometime 

我想要什么

id username password role  created_at updated_at 

1  jhon  yz  employee sometime  sometime 

用户型号:

class User extends Eloquent implements UserInterface, RemindableInterface { 
    public function role() 
    { 
     return $this->hasOne('role', 'id', 'role'); 
    } 
    protected $table = 'users'; 
    protected $hidden = array('password', 'remember_token');  
} 

角色型号:

class Role extends Eloquent { 
    protected $table = 'roles'; 
} 

请问如何在视图中的角色名?是我的关系正确

+0

这是'用户属于关联role' – 2014-09-25 14:44:14

回答

0

一个角色可以由多个用户使用,如:

user1的可管理 user2的可管理太 用户3是经理 USER4是经理太

如果多数民众赞成然后的情况下,..

用户型号:

class User extends Eloquent implements UserInterface, RemindableInterface { 
     protected $table = 'users'; 
     protected $hidden = array('password', 'remember_token'); 

     public function role() 
     { 
      return $this->belongsTo('Role'); 
     } 
    } 

角色型号:

class Role extends Eloquent { 
    protected $table = 'roles'; 

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

然后使用:

User::with('role')->whereRole(1)->get(); // assuming that 1 = employee; this is eager loading 

这将产生类似:

[ 
    new User([ 
     'id' => 1, 
     'username' => 'blahblah', 
     'password' => 'pass', 
     'role' => 1, 
     'created_at' => '0000-00-00', 
     'updated_at' => '0000-00-00', 
     'role' => new Role([ 
        'id' => 1, 
        'role' => 'employee', 
        'created_at' => '0000-00-00', 
        'updated_at' => '0000-00-00' 
       ]) 
    ]) 
] 
+0

确定我如何获取所有员工记录此$用户=用户::所有() - >作用; ? – 2014-09-25 14:51:23

+0

尝试'foreach(User :: with('role') - > get()as $) { echo $ user-> role-> role; }' – Adimeus 2014-09-25 15:00:55

+0

如果你想有一个像你上面显示的输出,你可以使用变压器 – Ceeee 2014-09-25 15:09:02