Odd-Problem hier, ich habe eine Sicht content.home
, die auf das User
Modell des authentifizierten Benutzers basiert, um zu lösen und an es übergeben werden.Laravel 5 Async Datenbank Transaktion?
Bevor das Benutzermodell bereit ist, habe ich eine einfache Funktion, in der ich einen Namen an das User
Modell des authentifizierten Benutzers übergebe.
Dieser Code ist unten, einschließlich der Ansicht Rückkehr:
public function name()
{
$input = Input::all();
$name = $input['name'];
if(strlen($name)>2) //some validation
{
$user = User::where('id',Auth::id())->first();
$user->name = $name;
$user->save();
return view('content.home')->with('user', Auth::user());
}
}
Mein Problem ist, wenn ich die Ansicht, die ich nicht zurück den name
des Benutzers hat. Sobald ich die Seite aktualisiere, erscheint sie. Andere Benutzerdaten, die von Auth::user()
bereitgestellt werden, sind dort, aber nicht der Name. Wie kann das sein, wenn ich es gerade gerettet habe? Es ist nicht NULL
, wieder, wenn ich die Seite sofort aktualisiere, erscheint es.
ich die name
in der Klinge Ansicht immer in etwa so:
{{$user->name}}
Ist save()
async? Ich denke nicht. Gibt es eine gewisse Latenz?
Wie kann ich sicherstellen, dass das übergebene Modell korrekt aufgelöst wird?
Vielen Dank!
Der Grund, warum Sie dieses Problem hatte ändern ist, weil Ihr Benutzerinstanz aus der Abfrage eine ganz andere Instanz als das, was Auth :: Benutzer() verweist. –
@jjones Warum sagst du das? Verweisen sie (in diesem Fall) nicht auf denselben Benutzer? –
Sie sind derselbe Benutzer, sind aber nicht dieselbe Instanz der Benutzerklasse. Wenn Sie den Name der Benutzerinstanz aktualisieren, die von der Abfrage zurückgegeben wird, wird die Instanz, auf die Auth :: user() verweist, nicht beeinflusst, da es eine andere Instanz der Benutzerklasse ist. –