Получить подробную информацию о сводной колонке [Laravel 5]

У меня есть 3 таблицы: Project, Group, User

и одна сводная таблица отношений: project_group со столбцами: id project_id group_id и сводным полем user_id

Я умею брать все Группы и Проекты:

Project::find(1)->groups()->get();

groups() — это функция ownToMany внутри модели проекта.

Проблема в том, что я не знаю, как получить всех пользователей для конкретного проекта. Мне нужно получить проект и все имена пользователей и идентификаторы для этого проекта, какое-либо решение для этого?

заранее спасибо


person Vladimir Djukic    schedule 25.11.2015    source источник


Ответы (1)


Вы можете попробовать свою модель Project.php, добавив отношение сводки.

public function users() {
    return $this->hasMany(App\User::class, 'project_group');
}

Однако это может ввести в заблуждение, поскольку project_group должна быть сводной таблицей между таблицами project и group. user_id здесь не место.

Создайте вторую сводную таблицу с именем group_user с group_id, user_id. Затем вы можете использовать это на своей модели Group.php:

public function users() {
    return $this->hasMany(App\User::class, 'group_user');
}

Примером тогда будет:

$project = Project::find(1);
foreach($project->groups as $group) {
    $users = $group->users; // Now you should have access to all the users for each group
}
person Pistachio    schedule 25.11.2015