我试图保存到数据库中,但我经常收到此错误
调用未定义的方法stdClass :: save()
我的控制器
$c = DB::table('subject_user')->where('user_id', $value)->first();
$c->auth_teacher = '1';
$c->save();
答案 0 :(得分:9)
尝试这种方法
我没有尝试使用save
条件的where
方法。希望这种方法可以解决您的问题。
DB::table('subject_user')->where('user_id', $value)->update(['auth_teacher' => 1]);
答案 1 :(得分:4)
我遇到了同样的问题并找出了真正的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
(或适用于您的任何内容)。
答案 2 :(得分:0)
DB :: table(' subject_user') - >其中(' user_id',$ value) - >更新([' auth_teacher' => ; 1]);
我已经成功了。
答案 3 :(得分:0)
您可以在此处阅读,有两种保存/更新记录的方法。在您的情况下,您需要执行以下操作:https://laravel.com/docs/6.x/queries#updates
$affected = DB::table('users')
->where('id', 1)
->update(['votes' => 1]);
答案 4 :(得分:0)
在某些情况下,Laravel 控制器不接受 find 方法。也许您已经尝试过您的控制器。
解决方案 1)
尝试在模型中使用find 方法。
解决方案 2)
尝试在控制器中使用 Where 子句 而不是 find。
答案 5 :(得分:0)
如果您开始使用 DB:: 而不是 Model:: 因为您需要动态表名调用,则可以使用动态接口调用代替,但我想知道这是否是一个好习惯,任何愿意解释的人以下是错误的(因为它工作正常):
$model = 'User'; //Use the name of the model, not the table name
$interface_model = '\App\Models\\' . $model; //Needed to avoid the manual import of each model
$entry = $interface_model::where('id', $id)->first();
//$entry now support save()