php - 与 Laravel 和 Eloquent 的三向关系

标签 php laravel laravel-4 eloquent

我已经在 laravel 论坛上发布了这个,但没有人能够提供任何帮助。以为我会在这里发布第二意见。

我需要一些关于如何构建我的模型的建议/帮助。这是我正在尝试做的事情

一个用户可以是多个团队的成员,但用户可以在每个团队中扮演不同的角色。

这个想法是用户看到一组不同的数据/功能,具体取决于他们在团队中扮演的角色。

所以我想到了这样的事情:

Users
id, name, email, etc...

Teams
id, name, description

Roles
id, name

Team Users
user_id, team_id, role_id

team_members 表会将这 3 个部分联系在一起。定义用户属于哪些团队以及他们拥有的角色。

我的问题是:

  1. 这是处理这种关系的最佳方式吗
  2. 如何将用户分配到具有角色的团队?
  3. 使用 Eloquent,我如何在给定团队中获得用户角色?

最佳答案

从您的场景来看,您定义的表看起来不错,可以将用户分配给团队及其角色,前提是您为表创建了一个模型 TeamMember,您可以执行如下操作:

//assign or update user team or role
$new_member = TeamMember::firstorCreate(array(
              'user_id' => $this->user->id,
              'team_id' => $team_id,
              'role_id' => $role_id,
              ));

//accessing the role of a user on a team
$role = TeamMember::where('user_id', '=', $user_id)
        ->where('team_id', '=', $team_id)->first()->role_id;

//get the name of the role
$role_name = Role::find($role)->name;

关于php - 与 Laravel 和 Eloquent 的三向关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21149024/

相关文章:

unit-testing - 如何在 UnitTesting Laravel 4 上模拟 App::make()

php - 如何在 Laravel 4 中插入相关的多态模型

javascript - 如何通过AJAX、PHP传递复选框值?

PHP 找不到 mySQL 数据库?

php - 浏览器无法打开php页面?

javascript - Vue+Laravel : How to mounted data from api if data in form array in one of tuple data

php - 尝试在 Laravel 中删除行时出现 “Call to undefined method stdClass::delete()” 错误

php - 如何在数据库中存储精确的十进制值

javascript - 如何使用 proengsoft/laravel-jsvalidation 和 Laravel 5 验证数组输入

php - 用户 'root' @'localhost' 的访问被拒绝 - Laravel