4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Call to undefined method StdClass::save()

Last updated at Posted at 2021-08-16

Laravelで**記事を更新する処理(update)**を書いている際に起こったエラーです。原因は単純なことだったのですが、エラー解消に2日ほど時間がかかってしまったので共有したいと思いました。

スクリーンショット 2021-08-16 18.44.20.png

## 環境

・PC: Macbook Pro 2017
・Laravel 5.8
・PHP 7.4.15
・Mysql 5.7.34

##  原因
更新したい記事を取得する際にEloquentで取得したレコードとクエリビルダで取得したレコードの型が違うことが原因でした。
色々な方の記事を参考にしてアップデートの処理を書いていたため、上記のことを理解しておらずハマりました。

Eloquent

$rsv = Book::where('user_id','=',$user)
        ->orderBy('created_at','desc')
        ->first();

Eloquentで返すレコード(object(Illuminate\Support\Collection)
スクリーンショット 2021-08-16 19.09.52.png

クエリビルダ

$rsv = DB::table('books')
        ->where('user_id','=',$user)
        ->orderBy('created_at','desc')
        ->first();

クエリビルダで返すレコード(array(n) { [0]=> object(stdClass)
スクリーンショット 2021-08-16 19.29.27.png

僕の場合はEloquentで処理を書いていたので、クエリビルダではなくEloquentのモデルを使ってデータを取得しなければならなかったということです。

お役に立てたら嬉しいです。

 参考にさせて頂いた記事

・Eloquentとクエリビルダ返す値の違い
・Laravel Eloquent

4
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?