4

我有桌子:

用户{id,名称}
项目{id,名称}
角色{id,名称}
projects_users {id, user_id, project_id, role_id}

我有模型:

project { 通过 projects_users 拥有许多用户}
用户 { 通过 projects_users 有很多项目 }

问题:我如何获得一个项目的用户角色?或者也许我必须重建我的桌子?

代码:

$project = ORM::factory('project', $id);
$users = $project->users->find_all();
foreach ($users as $u) {
    $roles = $u-> .... 如何获取该用户和该项目的所有角色?
}
4

1 回答 1

1

您的 project_users 表似乎代表项目中的角色,添加另一个与该表相关的模型:

project_role { 
    has one user 
    has one role
    has one project
}
user {
    has many project_role
    ...
}
project {
    has many project_role
    ...
}

那么你也许可以这样做:

$user = ORM::factory('user')
    ->with('project_role')
    ->where('project_role.project_id', '=', $id)
    ->with('project_role:role')->findall();

如果这不起作用,则以下其中一项应该起作用,但可能是与您所追求的不同形式的遍历。

$project = ORM::factory('project', $id);
$roles = $project->project_role->with('user')->with('role')->findall();

或者

$roles = ORM::factory('project_role')
    ->where('project_id', '=', $id)
    ->with('user')->with('role')->findall();
于 2010-08-06T12:14:01.187 回答