Laravel blade множественный выбор. Как выбрать записи в сводной таблице?

Я использую Laravel, и у меня есть таблица проектов и таблица пользователей. Каждый проект может иметь несколько пользователей. Я установил сводную таблицу project_user.

Я пытаюсь создать окно множественного выбора, в котором перечислены все пользователи, и пользователи, назначенные в данный момент для выбранного проекта. Вот моя функция ProjectsController, которая создает представление.

public function edit($id)
{
$project = Project::findOrFail($id);
$users = User::lists('name','id');
return View::make('projects.edit', compact('project','users'));
}

А вот соответствующая форма лезвия:

{{ Form::select('user_id[]', $users, ??? , array('multiple')) }}

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

$project->user...something here?

Или мне нужно создать массив в функции edit ()?

2

Решение

Вы почти там. Сначала убедитесь, что у вас есть правильные отношения, определенные в модели вашего проекта

public function users(){
return $this->belongsToMany('User');
}

Теперь, чтобы получить идентификаторы всех назначенных пользователей:

$assignedUserIds = $project->users()->lists('id');

И просто передать это на вид …

2

Другие решения

Принятый ответ правильный, кроме как на Laravel 5.2. -> ToArray ():

$assignedUserIds = $project->users()->lists('id')->toArray();

чтобы заставить это работать с Form :: select.

Я бы прокомментировал оригинальный ответ, но мне не хватает репутации.

0

По вопросам рекламы [email protected]