Yeloquent's default $ атрибуты не мутируются
Вопрос
Кажется, что значения по умолчанию, определенные в свойстве $ Атрибуты, не мутируются перед сохранением в базе данных?
У меня есть эта настройка:
protected $attributes = array(
'data' => array();
);
public function getDataAttribute($value)
{
return unserialize($value);
}
public function setDataAttribute($value)
{
$this->attributes['data'] = serialize($value);
}
.
Все, что я получаю, это поле базы данных, заполненное буквально «массивом» и ошибкой Preg_replace.При указании атрибута по умолчанию в методе переопределенного генеракодицетагCode он становится мутированным.
может кто-нибудь подтвердить это и / или есть предложения?
спасибо.
Решение
Вы назначаете переменную по умолчанию на самом объекте, которая находится вне функции мутатора.
Лучший вариант, вероятно, включает в себя по умолчанию в конструкторе модели, поэтому их называются и мутируются при создании объекта.Я думаю, что что-то вроде этого должно работать:
function __construct($attributes = array()) {
parent::__construct($attributes);
$this->data = array();
}
. Не связан с StackOverflow