Обновление модели отношений в Laravel

Я новичок в Laravel 5. Я просмотрел урок «Основы Laravel 5», и у меня возникла проблема.

Модель статьи

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

Модель категории

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

ArticleController

public function create()
{
$categories = Category::lists('name', 'id');

return view('admin.article.create', compact('categories'));
}

public function store(ArticleRequest $request)
{
$article = new Article($request->all());
$category = Category::find($request->input('categories'));
$article->category()->associate($category);
\Auth::user()->article()->save($article);

return \Redirect::to('/admin/article');
}

public function edit(Article $article)
{
$categories = Category::lists('name', 'id');

return view('admin.article.edit', compact('article', 'categories'));
}

public function update(Article $article, ArticleRequest $request)
{
$article->update($request->all());

return redirect('admin/article');
}

Как я могу обновить модель Article и связанную модель Category?

2

Решение

Вы можете обновить как это: (первоисточник: http://laravel.com/docs/5.0/eloquent#insert-update-delete)

public function update(Article $article, ArticleRequest $request)
{
$newValues = $request->except('_method', '_token');
foreach($newValues as $key => $value)
{
$article[$key] = $value;
}
$article->save();

return redirect('admin/article');
}

или же

public function update(Article $article, ArticleRequest $request)
{
$article->title = $request->input('title');
//all article's table columns = $request->input('corresponding_input_name')
$article->save();

return redirect('admin/article');
}

По предложению @patricus:

public function update(Article $article, ArticleRequest $request)
{
$article->fill($request->all());
$article->save();
return redirect('admin/article');
}
0

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

Других решений пока нет …

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