Я новичок в 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?
Вы можете обновить как это: (первоисточник: 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');
}
Других решений пока нет …