2016-10-27 41 views
0

嵌套关系我有这些表:Laravel 5条件

用户

| ID | ROLE_ID | clan_id |

角色

| id | slug |

氏族

| id |

我需要抓住所有用户,其中蛞蝓是例如“领袖”

我该怎么办呢?

我走到这一步:

class clan extends Model{ 
    public function leader() 
    { 
     $leader = User::whereHas('role', function($query) { 
      $query->where('slug', 'leader'); 
     })->where('clan_id', $this->id)->get(); 

     return $leader; 
    } 
} 

但是,这并不算是智能。取而代之的是,我想将它加入了我的氏族表

战队:

| ID | leader_user_id |

所以我可以轻松访问它。

非常感谢:)

回答

1

您可以创建战队和用户的之间的关系one-to-many

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

而在你leader()功能,可以作为写:

public function leader() 
{ 
    $leader = $this->users()->whereHas('role', function($query) { 
     $query->where('slug', 'leader'); 
    })->get(); 

    return $leader; 
} 

更新

要评论的下面

响应您可以创建范围为:

public function scopeLeader($query) 
{ 
    return $query->with(['users' => function($query) { 
       $query->whereHas('role', function($q) { 
        $q->where('slug', 'leader'); 
       }); 
} 

,您可以获取Clan为:

Clan::where('name', $clanname)->leader()->get() 
+0

但我不能做某事,如:家族: :where('name',$ clanname) - > leader(); – WLFCRK

+0

你想获取用户或家族? –

+0

我想取得部落,但是有一个参考领导者 - 用户,所以我也可以访问领导者用户。那可能吗? – WLFCRK