2016-05-06 2 views
0

Я в тупике от этого. Я хочу добавить json закодированный массив к данным, которые передаются моей модели.Laravel - данные не передаются модели :: create() из репозитория

В моей модели у меня есть мутатор, который будет выполнять некоторые пользовательские работы над массивом перед представлением.

Однако, хотя я уверен, что данные существуют в массиве $ data, когда я регистрирую значение в модели, я ничего не получаю. Любые идеи приветствуются.

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 был установлен в нефтеналивной собственности также. Все остальные атрибуты заносятся в журнал, кроме этого? Любые идеи о том, почему это так?

Update

я определил, что это будет ошибка вызвана «Атрибуты» термин является частью имени свойства. Я попытался изменить имя свойства на «AdditionalStuff», и он сразу сработал. Я сообщил о проблеме в github по следующей ссылке.

https://github.com/laravel/framework/issues/13460

Следующий пример работает отлично. Единственное изменение - это имя.

MyRespoitory.php

$data['additionalStuff'] = json_encode($additionalStuff); 
Log::debug($data); 
return MyModel::create($data); 

Следующие возвращает ожидаемый выход.

MyModel.php

Log::debug($this->additionalStuff); 
+0

Разве вы не регистрируете '$ value', а не' $ this-> дополнительные атрибуты'? –

+1

Вы определили атрибут $ fillable на своей модели? https://laravel.com/docs/5.2/eloquent#mass-assignment – Pascal

+0

@JoelHinz Спасибо за ответ. Нет, это просто пример, у меня больше в моем мутаторе, но журнал проверяет только текущее значение дополнительных атрибутов. Я подтвердил, что это ошибка в структуре. Теперь я уточню вопрос. – jiraiya

ответ

0

Его привязали к accessors & mutators. Из-за этого суффикс «Атрибут» зарезервирован для имен полей.

+0

Да, это было первое, на что я смотрел, когда понял, что происходит.Но я бы подумал, что это сработает с его «Атрибутов», а не «Атрибут», и поэтому мутатор будет называться «setAdditionalAttributesAttribute». – jiraiya

Смежные вопросы