Gli attributi predefiniti di Eloquent non vengono mutati
Domanda
Sembra che i valori predefiniti definiti nella proprietà $ Attributi non vengano mutati prima di salvare nel database?
Ho questa configurazione:
protected $attributes = array(
'data' => array();
);
public function getDataAttribute($value)
{
return unserialize($value);
}
public function setDataAttribute($value)
{
$this->attributes['data'] = serialize($value);
}
.
Tutto quello che ottengo è il campo del database riempito con letteralmente "array" e un errore preg_replace.Dopo aver specificato l'attributo predefinito in un metodo save()
sovrascritto che viene mutato.
Qualcuno può confermare questo e / o avere suggerimenti?
Grazie.
Soluzione
Stai assegnando una variabile predefinita sull'oggetto stesso, che è al di fuori della funzione di un mutatore.
L'opzione migliore è probabilmente quella di includere l'impostazione predefinita nel costruttore del modello, quindi vengono chiamate e mutate quando viene creato l'oggetto.Penso che qualcosa di simile dovrebbe funzionare:
function __construct($attributes = array()) {
parent::__construct($attributes);
$this->data = array();
}
.