Attach and Validate Many-to-Many Inserts- EPISODE 33
下記の変更前のコードは検証した結果をnew Article()メソッドに渡しているが、これだと例外が発生する。
tagsはarticlesテーブルのカラムではなく、Relation?であるためだ。
変更後のコードのように検証とインスタンス作成の処理は分ける必要がある。
変更前
$article = new Article($this->validateArticle());
変更後
$this->validateArticle();
$article = new Article(request(['title', 'excerpt', 'body']));
protected function validateArticle(): array
{
return request()->validate([
'title' => 'required',
'excerpt' => 'required',
'body' => 'required',
'tags' => 'exists:tags,id'
]);
}
モデルの中でwithTimestampsメソッドを下記のように使う。
return $this->belongsToMany(Tag::class)->withTimestamps();