Вопрос

У меня есть таблицы:

Пользователи {ID, имя} Проекты {ID, имя} Роли {ID, имя} Projects_Users {ID, user_id, project_id, rote_id}

У меня есть модели:

Проект {много пользователей через user projects_users} user {имеет много проектов через Projects_Users}

Вопрос: Как я получаю пользовательские роли для одного проекта? Или, может быть, я должен восстановить свои таблицы?

Код:

$ Project = ORM :: Factory («проект», $ ID); $ users = $ Project-> Пользователи-> find_all (); foreach ($ пользователи как $ u) {$ roles = $ u-> .... Как получить все роли для этого пользователя и для этого проекта? }
Это было полезно?

Решение

Ваш стол 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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top