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.

È stato utile?

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();
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top