2015-04-16 76 views
2

我的應用程序的相關部分被設置如下正確的地方:哪裏是把一個與用戶相關的功能Laravel 5.0

  • users表,具有獨特的用戶ID
  • 一球隊表,帶有唯一的球隊ID
  • Team_Membership表,其中 是用戶ID和球隊ID的唯一ID和列,用於表示用戶屬於球隊的 。

用戶可以在無限數量的團隊中。

我有一個函數來檢索給定用戶所屬團隊的數組。通常會在當前登錄用戶的範圍內調用以獲取其活動團隊,但也將用於管理功能以返回給定用戶標識的團隊。

我首先想到的是使功能從用戶模式調用,因此對於一個給定的用戶對象,我可以做如下

$teams = $user->get_teams(); 

$teams = User::get_teams($user_id); 

但我不是當然,如果這通常被認爲是Laravel的這種類型的功能的最佳做法。這個功能應該放在哪裏?

回答

2

其實,你正在談論的是,如果你使用雄辯,laravel已經爲你做了些什麼。

use Illuminate\Database\Eloquent\Model; 

class User extends Model 
{ 
    protected $table = 'users'; 

    public function teams() 
    { 
     return $this->belongsToMany(Team::class); 
    } 
} 

class Team extends Model 
{ 
    protected $table = 'teams'; 

    public function users() 
    { 
     return $this->belongsToMany(User::class); 
    } 
} 

除了usersteams表,你會做一個透視表:

team_user 
    id - integer 
    team_id - integer 
    user_id - integer 

和laravel沒有休息。

$userId = 1; 

$user = User::with('teams')->find($userId); 

$teams = $user->teams; 
+0

漂亮!我對Laravel和一般的Eloquent等全功能的ORM非常陌生,所以這是一件很棒的事情。但爲了將來的參考,如果我不得不爲這樣的事情做一個自定義函數,那麼用戶模型會是正確的地方嗎? – Morgan

+1

文檔中的大量信息:http://laravel.com/docs/5.0/eloquent#relationships – ryanwinchester