übergeben Ich bin von diesem ratlos. Ich möchte ein JSON-kodiertes Array zu den Daten hinzufügen, die an mein Modell übergeben werden.Laravel - Daten werden nicht an model :: create() aus dem Repository
In meinem Modell habe ich einen Mutator, der einige benutzerdefinierte Arbeiten an dem Array vor der Einreichung durchführen wird.
Obwohl ich sicher bin, dass die Daten in der $ Daten-Array vorhanden sind, wenn ich den Wert im Modell protokolliere, bekomme ich nichts zurück. Irgendwelche Ideen werden geschätzt.
MyRepository.php
$data['additionalAttributes'] = json_encode($additionalAttributes);
Log::debug($data);
return MyModel::create($data);
MyModel.php
//The following returns null for no reason.
Log::debug($this->additionalAttributes);
additionalAttributes wurde auch in der ausfüllbare Eigenschaft. Alle anderen Attribute sind außer diesem loggable? Irgendwelche Ideen, warum das so ist?
aktualisiert
ich dies festgestellt habe, ein Fehler durch den „Attribute“ Begriff als Teil der Eigenschaftsnamen verursacht werden. Ich habe versucht, den Namen der Eigenschaft zu "AdditionalStuff" zu ändern und es hat sofort funktioniert. Ich habe das Problem auf GitHub unter dem folgenden Link gemeldet.
https://github.com/laravel/framework/issues/13460
Das nächste Beispiel funktioniert gut. Die einzige Änderung ist der Name.
MyRespoitory.php
$data['additionalStuff'] = json_encode($additionalStuff);
Log::debug($data);
return MyModel::create($data);
Der folgende Code gibt die erwartete Ausgabe.
MyModel.php
Log::debug($this->additionalStuff);
Sollten Sie nicht '$ value' und nicht' $ this-> additionalAttributes' protokollieren? –
Haben Sie das Attribut $ fillable in Ihrem Modell definiert? https://laravel.com/docs/5.2/eloquent#mass-assignment – Pascal
@JoelHinz Danke für die Antwort. Nein, nur ein Beispiel, ich habe mehr in meinem Mutator, aber das Log prüft nur, ob der aktuelle Wert von additionalAttributes überhaupt gesetzt ist. Ich habe überprüft, dass dies ein Fehler im Framework ist. Ich werde die Frage jetzt mit Details aktualisieren. – jiraiya