我的应用程序的相关部分设置如下:
用户可以使用无限数量的团队。
我有一个函数来检索给定用户所属的团队数组。它通常会在当前登录用户的范围内调用以获取其活动团队,但也将在管理功能中用于返回给定用户ID的团队。
我的第一个想法是让函数可以从用户模型调用,所以对于给定的用户对象,我可以这样做
$teams = $user->get_teams();
或
$teams = User::get_teams($user_id);
但我不确定这是否通常被认为是Laravel中此类功能的最佳做法。该功能应该放在哪里?
答案 0 :(得分:2)
实际上,如果您使用的是Eloquent,那么您正在谈论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);
}
}
除users
和teams
表外,您还可以制作数据透视表:
team_user
id - integer
team_id - integer
user_id - integer
并且laravel完成其余的工作。
$userId = 1;
$user = User::with('teams')->find($userId);
$teams = $user->teams;