2017-08-03 19 views
1

Update-Methode aktualisiert:Benutzer nicht Laravel

public function update(UserUpdateRequest $request, Users $uzytkownik) 
    { 
     $this->authorize('update', $uzytkownik); 

     if ($uzytkownik->update([ 
      'birth' => $request->birth, 
      'sex' => $request->sex, 
      'about' => $request->about, 
     ])) 
     { 
      return 1; 
     } 

     return 0; 
    } 

Auf Update hier in Seite 1 erscheint. Wie es das Ding gemacht hat. Aber in db hat sich nichts geändert.

$uzytkownik ist die richtige Benutzer und Dies ist die dd($uzytkownik);

enter image description here

Und unter dd($request->birth.'---'.$request->sex.'---'.$request->about); ist die

enter image description here

richtigen Eingaben zeigt, warum es nicht richtig funktioniert?

+0

Haben Sie gemacht diese Spalten im Modell befüllbar? –

+1

Wie Sagar vorgeschlagen hat, muss das ausfüllbare Array korrekt gefüllt sein, um update- und create-Methoden zu verwenden – aaron0207

+0

Laravel's update() - und create() - Funktionen geben das Modell zurück, ob es erfolgreich gespeichert wurde oder nicht. Sie können die Funktion save() verwenden, die Ihnen einen nützlichen Booleschen Wert zurückgibt, den Sie in dieser if() -Anweisung verwenden können. – sunomad

Antwort

3

Gemäß der documentation

Massenzuordnung Sie können auch die Methode erstellen verwenden, um ein neues Modell in einer einzigen Zeile zu speichern. Die eingefügte Modellinstanz wird Ihnen von der Methode zurückgegeben. Bevor Sie dies jedoch tun, müssen Sie entweder ein ausfüllbares oder ein bewachtes Attribut im Modell angeben, da alle Eloquent-Modelle standardmäßig vor einer Massenzuweisung schützen.

Sie müssen sicherstellen, dass $fillable oder $guarded korrekt anders gesetzt Änderungen können nicht persistieren werden.

0

Sie können tun, was Sie so wollen auch:

public function update(UserUpdateRequest $request, Users $uzytkownik) 
{ 
    $this->authorize('update', $uzytkownik); 

    $uzytkownik->birth = $request->birth; 
    $uzytkownik->sex = $request->sex; 
    $uzytkownik->about = $request->about; 

    if ($uzytkownik->save()) 
    { 
     return 1; 
    } 

    return 0; 
} 
+0

Das scheint jedes Mal sehr viel Aufwand zu sein, wenn Sie ein Objekt aktualisieren wollen, wenn Sie nur die modalen Attribute auf dem neuesten Stand halten müssen. – Ian

+0

Vielleicht, aber mir scheint das OP 1 oder 0 je nachdem zurückgeben zu wollen Modell wurde gespeichert oder nicht. Und das ist viel einfacher, als das Modell erneut abzurufen und zu vergleichen, um sicherzustellen, dass alle Attribute korrekt in der Datenbank gespeichert sind. – sunomad

+0

Funktioniert auch nicht, aktualisiert nicht –