2016-08-01 13 views
0

Wenn ich einen neuen Datensatz in meinem Fan-Modell anlege, während ich gleichzeitig den neuen Fan-Datensatz erstelle, möchte ich den neuen ID-Wert in einer anderen Spalte verwenden. Ich versuche das alles auf einmal zu tun und habe keine andere Methode, um die Aufzeichnung zu aktualisieren.Laravel Datensatz erstellen und ID-Wert in einer anderen Spalte verwenden

Ich habe $ Fan versucht, aber funktioniert nicht, da diese Variable noch nicht erstellt wurde. Ich kann Auth nicht verwenden, da die ID nicht die ID des Auth-Benutzers ist.

Danke!

+0

Nur aus Neugier, warum möchten Sie das tun? Sicher, wenn das zweite Feld nur die ID und ein Suffix/Präfix enthält, können Sie dies außerhalb der Datenbank in jedem Modell mit Laravels 'Attends' Funktionalität tun. –

+0

Es ist für Algolia wirklich, ich muss eine eindeutige ID für jeden Datensatz zuweisen. Algolia wird meinen Index aktualisieren, wenn ich den neuen Datensatz erstelle, aber ich habe Probleme, diesen Datensatz im Index zu aktualisieren, nachdem er erstellt wurde. Also würde ich es gerne auf einen Schlag machen. –

Antwort

1

Ich bezweifle, dass Sie es automatisch tun können, sollten Sie es in zwei Schritten tun:

$fan = Fan::create([ 
    'display_name' => $displayName, 
    'bio' => $bio, 
    'logo_url' => $logoUrl 
]); 

$fan->algolia_id = 'fan_' + $fan->id; 
$fan->save(); 

Das heißt, es ist nicht eine große Datenbank-Design, die Sie lieber das algolia_id Feld aufbauen möchten, wenn Sie brauchen es zu verwenden, da Sie doppelten Wert speichern würden (die id und die algolia_id sind die gleichen außer für fan_).

+0

Richtig, ich möchte, dass sie zur selben Zeit erledigt werden oder die algolia_id muss später aktualisiert werden, was Probleme verursachen kann. Ich denke, ich kann ein Inkrement der Max-ID bereits in der Datenbank einer Variablen zuweisen und diese verwenden, da dies immer noch der neuen ID entspricht. –

+0

Ich würde es nicht empfehlen, was ist, wenn Sie einen neuen Wert zwischen dem Zeitpunkt, an dem Sie die maximale ID erhalten, und dem neuen 'Fan' eingeben? Es würde nicht funktionieren. Ich fürchte, eine zweistufige Lösung ist die einzig mögliche: / – AntoineB