2016-12-09 1 views
1

Ich versuche, in der Datenbank zu speichern, aber ich diesen FehlerCall to undefined Methode stdClass :: save()

Call to undefined Methode stdClass ständig erhalten :: save()

mein Controller

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

$c->auth_teacher = '1'; 

$c->save(); 
+0

Haben Sie ein Modell für die Tabelle subject_user erstellt? Die Methode DB :: table gibt Ihnen kein Objekt mit einer Speichermethode zurück. – MMMTroy

+0

nein ich nicht, weil das ist eine Pivot-Tabelle nur ich gehe direkt darauf – OunknownO

+0

Sofern Sie ein einzigartiges Szenario haben, würde ich versuchen, dies mit Hilfe von Modellen zu tun. Offenbar haben Sie Pivot-Werte für Ihre Viele-zu-Viele-Beziehung. Hilft Ihnen der folgende Stack-Thread überhaupt? http://stackoverflow.com/a/21942374/3750476. Ihr Code könnte so aussehen. $ user-> subjects() -> updateExistingPivot ($ subject-> id, Feld ('auth_teacher' => 1), false); – MMMTroy

Antwort

4

Versuchen Sie diesen Ansatz

ich nicht save Methode mit where Zustand versuchen. Hoffentlich kann dieser Ansatz Ihr Problem lösen.

0

DB :: tabelle ('subject_user') -> where ('benutzer_id', $ wert) -> update (['auth_teacher' => 1]);

Ich konnte damit Erfolg haben.

2

Ich lief gerade in das gleiche Problem und fand die wirkliche Laravel Antwort heraus.

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

Als ich die Dokumentation bei https://laravel.com/docs/5.4/eloquent#retrieving-models wieder lesen, bemerkte ich, dass ->save() nur funktionieren, wenn die Art und Weise, die ich abgerufen das Objekt (e) über das Modell wie folgt war:

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

Es gibt Keine Notwendigkeit, DB::table() irgendwo zu verwenden, und es scheint nicht der empfohlene Weg zu sein.

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

+2

das ist die angemessenere Antwort. – Conan

+0

Sie scheinen keine pessimistischen Sperren mit Eloquent-Modellen verwenden zu können. Wenn Sie Race-Bedingungen verhindern müssen, ist DB :: table() ein Muss. – patrickdamery

Verwandte Themen