Call to undefined method StdClass::save()
Laravelで記事を更新する処理(update)を書いている際に起こったエラーです。原因は単純なことだったのですが、エラー解消に2日ほど時間がかかってしまったので共有したいと思いました。
環境
・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)
クエリビルダ
$rsv = DB::table('books')
->where('user_id','=',$user)
->orderBy('created_at','desc')
->first();
クエリビルダで返すレコード(array(n) { [0]=> object(stdClass)
僕の場合はEloquentで処理を書いていたので、クエリビルダではなくEloquentのモデルを使ってデータを取得しなければならなかったということです。
お役に立てたら嬉しいです。
参考にさせて頂いた記事
Author And Source
この問題について(Call to undefined method StdClass::save()), 我々は、より多くの情報をここで見つけました https://qiita.com/Parasiteneet/items/10623d532b1ba568b264著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .