学習記録
2020-08-12に更新

Laravel From Scratch

Attach and Validate Many-to-Many Inserts- EPISODE 33

ErrorException「Array to string conversion」

下記の変更前のコードは検証した結果を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();

dychw
学習記録
所有者限定モードのためこのボードには投稿できません
コメント
学習記録