加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Kohana ORM关系问题

发布时间:2020-12-15 02:21:12 所属栏目:Java 来源:网络整理
导读:我有桌子: users {id,name}projects {id,name}roles {id,name}projects_users {id,user_id,project_id,role_id} 我有模特: project { has many users through projects_users }user { has many projects through projects_users } 题: 我如何获得一个项目
我有桌子:

users {id,name}
projects {id,name}
roles {id,name}
projects_users {id,user_id,project_id,role_id}

我有模特:

project { has many users through projects_users }
user { has many projects through projects_users }

题:
我如何获得一个项目的用户角色?或者我可能需要重建我的桌子?

码:

$project = ORM::factory('project',$id);
$users = $project->users->find_all();
foreach ($users as $u) {
    $roles = $u-> .... How to get all roles for this user and for this project?
}

解决方法

您的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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读