Ich habe ein Attribut des Modells, das geändert werden soll, nachdem es aus der Datenbank geladen wurde.Yii2 Wie kann ein Modellattribut nach der Lademethode geändert werden? (Wie die Afterfind-Methode)
Ich könnte die AfterFind-Methode erweitern, die den Varchar-Wert in ein PHP-Array konvertieren könnte. So funktioniert es finden.
Aber wenn das Modell geladen ist, habe ich keine Ahnung, wie dieses Varchar in das PHP-Array konvertieren.
Ich habe mit Regeln versucht, aber nicht funktioniert:
[['languages'], 'each', 'rule' => ['string']],
oder dieses
[['languages'], 'safe'],
So diese funktioniert afterfind:
public function afterFind()
{
$this->languages = $this->convertToPHPArray($this->languages);
parent::afterFind();
}
Durch die Art und Weise habe ich versucht, Erweitern Sie die init oder __constru ctor Methode mit dieser Konversation, aber kein Erfolg, nach laden Methode das Sprachen-Attribut ist immer noch eine Zeichenfolge anstelle eines PHP-Array.
, warum es kein 'afterLoad' Ereignis [yii2/issues/4615] (https://github.com/yiisoft/yii2/issues/4615), kann das Lesen des ganzen Threads eine Idee geben – Alex