Ich habe eine 'Benutzer' Tabelle und 'activation_tokens' Tabelle. Ich habe eine Beziehung im Benutzermodell als hasOne (ActivationToken :: class);Laravel Massenbelegung neuen Datensatz einfügen create() Alternative?
Das funktioniert alles gut. Jetzt möchte ich beim Erstellen eines Benutzers ein Token erstellen. Also rufe ich
$user->ActivationToken()->create(array('token'=>'RANDOM_STRING"));
Das ist alles gut, aber ich treffe die Masse-Zuweisung Fehler. I nicht möchte 'Token' als befüllbar setzen. Statt
Ich versuche
$activationToken = new ActivationToken();
$activationToken->token = 'RANDOM_STRING";
$activationToken->save();
, das in Ordnung ist, aber es ist nicht festgelegt, das user_id Feld in Abfrage. Ich denke, ich könnte es manuell tun, indem ich $activationToken->user_id = $user->id;
setze Aber das fühlt sich falsch an, da das ORM dies automatisch behandeln sollte, so weit die Dokumentation zu werben scheint. Also denke ich, dass ich etwas falsch mache?
Ich konnte nicht herausfinden, wie man das richtig macht. Irgendwelche Hinweise?
Danke!
Wenn Sie _ORM way_ gehen wollen, dann müssen Sie Token in Ihre "fillable" -Array für die Massenzuweisung setzen. Andernfalls müssen Sie es manuell mit der nicht bevorzugten Methode '$ activationToken-> user_id = $ user-> id' setzen. Zwei Möglichkeiten, wie du gehen kannst. Warum willst du das Feld nicht auf "befüllbar" setzen? – codedge
Wenn ich alles auffüllen muss, um den ORM-Weg benutzen zu können, stört das nicht den Zweck des Füllbaren/Bewachten?Es sei denn, diese ganze Massenaufgabe ist ein fehlerhaftes Konzept? Wer würde sowieso alle Werte aus einer zufälligen HTTP-Anfrage einer Datenbankabfrage zuordnen. :) Wäre es nicht sauberer, nur eine Funktion in der ActivationToken-Klasse zu erstellen, die ein Argument user_id nimmt und das Token einfügt? Dann könnte ich ActivationToken :: inserToken ($ user-> id) aufrufen und damit fertig sein. –
@codedge bitte die Antwort, die ich gepostet habe. Es scheint einen Weg zu geben, die Tabelle mit Massenzuweisung zu aktualisieren, ohne Spalten zum Füllen hinzuzufügen. –