web-dev-qa-db-fra.com

Appel à la méthode non définie stdClass :: save ()

J'essaie de sauvegarder dans la base de données mais j'obtiens constamment cette erreur

Appel à la méthode non définie stdClass :: save ()

mon contrôleur

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

 $c->auth_teacher = '1';

 $c->save();
6
OunknownO

Essayez cette approche

Je n'ai pas essayé la méthode save avec la condition where. Espérons que cette approche pourra résoudre votre problème.

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

Je viens de rencontrer le même problème et compris la vraie réponse Laravel.

La réponse que vous avez acceptée ici ( https://stackoverflow.com/a/41051946/470749 ) ne suit pas la méthode la plus vraie Laravel.

Lorsque je relis les docs sur https://laravel.com/docs/5.4/eloquent#retrieving-models , j’ai remarqué que ->save() ne fonctionnerait que si la manière dont I récupérée la objet (s) était via le modèle comme ceci:

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

Il n'est pas nécessaire d'utiliser DB::table() n'importe où, et son utilisation ne semble pas être la méthode recommandée.

Donc, vous pouvez changer DB::table('subject_user')->where en App\Subject_user::where (ou ce qui vous convient).

4
Ryan

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

J'ai pu réussir avec cela. 

0
OunknownO