在Laravel 5.0中放置用户相关功能的适当位置在哪里

时间:2015-04-16 21:30:47

标签: php laravel

我的应用程序的相关部分设置如下:

  • 具有唯一用户ID的用户表
  • 具有唯一团队ID的团队表
  • Team_Membership表,包含 表示用户ID和团队ID的唯一ID和列 用户属于某个团队。

用户可以使用无限数量的团队。

我有一个函数来检索给定用户所属的团队数组。它通常会在当前登录用户的范围内调用以获取其活动团队,但也将在管理功能中用于返回给定用户ID的团队。

我的第一个想法是让函数可以从用户模型调用,所以对于给定的用户对象,我可以这样做

$teams = $user->get_teams();

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

但我不确定这是否通常被认为是Laravel中此类功能的最佳做法。该功能应该放在哪里?

1 个答案:

答案 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);
    }
}

usersteams表外,您还可以制作数据透视表:

team_user
    id - integer
    team_id - integer
    user_id - integer

并且laravel完成其余的工作。

$userId = 1;

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

$teams = $user->teams;