2014-11-05 83 views
0

是否可以将以下代码转换为一行?您可以使用WHERE逻辑通过Laravel中的数据透视表获取数据吗?

// Fetch the producer role 
$Roles = Role::where('label', '=', 'Producer')->get(); 
$role = $Roles->first(); 

// Fetch the producers 
$Producers = Role::find($role->role_id)->users()->get(); 

而且,这里是我的透视表的逻辑看起来像(里面的角色):

public function users() { 
    return $this->belongsToMany('User', 'UsersRoles', 'role_id', 'user_id'); 
} 

回答

0

是的,但你为什么要它压扁到一条线?除了是它完全是多余的..

// 1st query, load collection of roles... 
$Roles = Role::where('label', '=', 'Producer')->get(); 
// ... just to use one of them? 
$role = $Roles->first(); 

$Producers = 
    // run another query to get the same role... 
    Role::find($role->role_id) 
    ->users()->get(); 

总之,这里的一个班轮:

$producers = Role::where('lable', 'Producer')->first()->users; 
// or 
$producers = Role::where('lable', 'Producer')->with('users')->first()->users; 
+0

感谢的人。我只需要用制作人角色获取用户。我不需要任何其他数据。 Laravel新增功能,并不确定是否有更简单的方法来执行此操作,它只是一个带有LEFT JOIN的查询。 – TheNatureBoy 2014-11-05 23:24:38