web-dev-qa-db-ja.com

未定義のメソッドstdClass :: save()の呼び出し

データベースに保存しようとしていますが、常にこのエラーが発生します

未定義のメソッドstdClass :: save()の呼び出し

私のコントローラー

 $c = DB::table('subject_user')->where('user_id', $value)->first();

 $c->auth_teacher = '1';

 $c->save();
7
OunknownO

このアプローチを試してください

save条件でwhereメソッドを試していません。うまくいけば、このアプローチで問題が解決する可能性があります。

 DB::table('subject_user')->where('user_id', $value)->update(['auth_teacher' => 1]);
11
502_Geek

私は同じ問題に遭遇し、本当のLaravel答えを見つけました。

ここで受け入れた答え( https://stackoverflow.com/a/41051946/470749 )は、真のLaravelの方法に従っていません。

https://laravel.com/docs/5.4/eloquent#retrieving-models でドキュメントをもう一度読んだとき、->save()が機能するのは、私は取得オブジェクトは次のようなモデルを介していた:

_$flights = App\Flight::where('active', 1)
           ->orderBy('name', 'desc')
           ->take(10)
           ->get();
_

どこでもDB::table()を使用する必要はありません。推奨される方法ではないようです。

したがって、DB::table('subject_user')->whereを_App\Subject_user::where_(または適切なもの)に変更できます。

4
Ryan

ここで読むことができるように、レコードを保存/更新するには2つの方法があります。あなたの場合、あなたは次のことをする必要があります: https://laravel.com/docs/6.x/queries#updates

$affected = DB::table('users')
              ->where('id', 1)
              ->update(['votes' => 1]); 
0
Chris8447

DB :: table( 'subject_user')-> where( 'user_id'、$ value)-> update(['auth_teacher' => 1]);

私はこれで成功することができました。

0
OunknownO