Я использую 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 ()?
Вы почти там. Сначала убедитесь, что у вас есть правильные отношения, определенные в модели вашего проекта
public function users(){
return $this->belongsToMany('User');
}
Теперь, чтобы получить идентификаторы всех назначенных пользователей:
$assignedUserIds = $project->users()->lists('id');
И просто передать это на вид …
Принятый ответ правильный, кроме как на Laravel 5.2. -> ToArray ():
$assignedUserIds = $project->users()->lists('id')->toArray();
чтобы заставить это работать с Form :: select.
Я бы прокомментировал оригинальный ответ, но мне не хватает репутации.