Кохана Орм отношения Вопрос
-
25-09-2019 - |
Вопрос
У меня есть таблицы:
Пользователи {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();
Не связан с StackOverflow