Laravel 5 - обновление связанной записи hasMany/membersTo

Laravel (5) вопрос новичка. Строительные проекты / Проект задач.

Маршруты:

Route::resource('project', 'ProjectsController');
Route::resource('project.task', 'TasksController');

Модель проектов:

public function tasks()
{
    return $this->hasMany('App\Tasks');
}

Модель задач:

public function project()
{
    return $this->belongsTo('App\Projects');
}

Теперь пытаемся отредактировать/обновить конкретную задачу. Маршрут к задаче: project/{project}/task/{task}/edit

** Вопрос. Верны ли мои функции редактирования и обновления в TasksController? Это работает, но не совсем уверен, что все должно быть сделано именно так... **

public function edit($project_id, $task_id)
{
    $Task = Tasks::find($task_id);
    return view('task_edit', compact('Task'));
}

public function update($project_id, $task_id)
{
    $input = array_except(Input::all(), '_method');
    $Task = Tasks::find($task_id);
    $Task->update($input);

    return Redirect::route('project.show', array($Task->project->id));
}

person Tomas    schedule 09.05.2015    source источник
comment
Если вы назначили массив $fillable в своей модели Task, вам не нужно удалять _method из $input, вы можете отправить Input::all(), и будут обновлены только заполняемые столбцы. Вероятно, вам также следует реализовать некоторую проверку.   -  person aethergy    schedule 10.05.2015
comment
Спасибо. Попробую только с Input::all(). И да, нужно реализовать валидацию. Как насчет параметра $project_id. Я запутался, следует ли как-то использовать параметр $project_id, который передается обеим функциям редактирования/обновления (также создания и сохранения) или нет?   -  person Tomas    schedule 10.05.2015


Ответы (1)


У вас нет никакой проверки. Не уверен, задумано или нет. Вы можете использовать Request::except('field'); для получения всех значений, кроме нежелательного. кроме этого Вещи выглядят хорошо. Вас что-то беспокоит?

person Pawel Bieszczad    schedule 09.05.2015
comment
Спасибо Павел. Я не понимаю, следует ли как-то использовать параметр $project_id, который передается функциям редактирования/обновления (также создания и хранения) или нет. - person Tomas; 10.05.2015
comment
Поскольку у вас есть отношение «один ко многим», вы можете даже пропустить проект/идентификатор из маршрута. Каждая задача имеет уникальный идентификатор, который используется для извлечения записи и ее обновления. Если бы у вас было отношение «многие ко многим», вам нужно было бы найти и обновить запись, а любые дополнительные параметры были бы в сводной таблице. - person Pawel Bieszczad; 10.05.2015