webentwicklung-frage-antwort-db.com.de

Aufruf der nicht definierten Methode stdClass :: save ()

Ich versuche in die Datenbank zu speichern, erhalte aber ständig diesen Fehler

Aufruf der nicht definierten Methode stdClass :: save ()

mein Controller

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

 $c->auth_teacher = '1';

 $c->save();
6
OunknownO

Versuchen Sie diesen Ansatz

Ich habe save-Methode nicht mit where-Bedingung versucht. Hoffentlich kann dieser Ansatz Ihr Problem lösen.

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

Ich bin gerade auf das gleiche Problem gestoßen und habe die wirkliche Antwort Laravel herausgefunden.

Die Antwort, die Sie hier akzeptiert haben ( https://stackoverflow.com/a/41051946/470749 ), folgt nicht der wahrsten Laravel Methode.

Beim erneuten Lesen der Dokumente unter https://laravel.com/docs/5.4/eloquent#retrieving-models ist mir aufgefallen, dass ->save() nur funktioniert, wenn der Weg, den ich abgerufen der Objekt (e) war über das Modell wie folgt:

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

Sie müssen DB::table() nicht überall verwenden, und es scheint nicht der empfohlene Weg zu sein.

Sie können also DB::table('subject_user')->where in App\Subject_user::where (oder was auch immer für Sie geeignet ist) ändern.

4
Ryan

Wie Sie hier lesen können, gibt es zwei Möglichkeiten, Datensätze zu speichern/zu aktualisieren. In Ihrem Fall müssten Sie Folgendes tun: 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]);

Das ist mir gelungen. 

0
OunknownO