2017-03-10 5 views
1

enter image description hereenter image description here Ich möchte ein Profil aktualisieren, und wenn ich den Datensatz aktualisiere, werden die alten Daten, die ich nicht geändert habe, ebenfalls aktualisiert.Laravel 5.3 Datensatz aktualisieren. Aktualisieren Sie nur den geänderten Datensatz und behalten Sie den unveränderten Datensatz bei

Ich möchte nur die Werte aktualisieren, die geändert werden. Unveränderte Werte sollten nicht aktualisiert werden.

Route:

Route::post('/profile/settings/{user}', 'Admin\[email protected]')->name('profile.settings'); 

Controller-Methode:

public function UpdateProfileSettings(Request $request, User $user) 
{ 

    if (auth()->user()->id == $user->id) { 

     $user->update([ 
      'name' => $request->name, 
      'qualification' => $request->qualification, 
      'institute' => $request->institute, 
      'gender' => $request->gender, 
      'speciality' => $request->speciality, 
      'address' => $request->address, 
     ]); 

     return redirect()->back(); 
    } else { 
     abort(403, "Unauthorized"); 
    } 
} 
+0

Ich nehme an, du sendest die unveränderten Daten nicht, bin ich richtig? –

+0

Wie kann ich es überprüfen? Der Benutzer kann jedes Feld bearbeiten. – Afraz

+0

Ich meinte, was sind die Werte von $ Anfrage-> Feld, wenn es nicht geändert wird .. var_dump die Werte und zeigen Sie es hier. –

Antwort

1

Sie können die versuchen folgende

$name = $request->input('name', $user->name); 

Für Laravel 5.4: Auch makesure dass TrimStrings und ConvertEmptyStringsToNull Middle in Ihrer Anwendung globale Mitte innerhalb App\Http\Kernel

Für Laravel 5.3 können Sie manuell hinzufügen, diese Mittelwaren, zu einem Projekt gefunden Stapel .. Hinzufügen TrimgStrings wird here dargestellt.

ConvertEmptyStringsToNull Hinzufügen die gleichen Schritte folgen ..

Erstellen Sie eine neue Datei ConvertEmptyStringsToNull.php

<?php 
namespace App\Http\Middleware; 
class ConvertEmptyStringsToNull extends TransformsRequest 
{ 
    /** 
    * Transform the given value. 
    * 
    * @param string $key 
    * @param mixed $value 
    * @return mixed 
    */ 
    protected function transform($key, $value) 
    { 
     return is_string($value) && $value === '' ? null : $value; 
    } 
} 
  1. die Middleware als globale Register durch Hinzufügen in Ihre App\Http\Kernel.php

    protected $middleware = [ 
    \Illuminate\Foundation\Http\Middlewar\CheckForMaintenanceMode::class, 
    \App\Http\Middleware\TransformsRequest::class, 
    \App\Http\Middleware\TrimStrings::class, 
    \App\Http\Middleware\ConvertEmptyStringsToNull::class, 
    ]; 
    
+0

Es ist etwas falsch mit der Formatierung, nicht sicher, ob es mit Stackoverflow oder meinem Browser (Vivaldi) verwandt ist. –

Verwandte Themen