Pregunta

Tengo tablas:

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

Tengo modelos:

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

Pregunta:¿Cómo obtengo roles de usuario para un proyecto?¿O tal vez tengo que reconstruir mis tablas?

Código:

$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?
}
¿Fue útil?

Solución

Su mesa project_users parece estar representando papeles en proyectos, añadir otro modelo que está ligada a la tabla:

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

A continuación, podría ser capaz de hacer:

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

Si esto no funciona, uno de los siguientes debería funcionar, pero puede ser una forma diferente de recorrido a lo que está buscando.

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

o

$roles = ORM::factory('project_role')
    ->where('project_id', '=', $id)
    ->with('user')->with('role')->findall();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top