Как программно изменить экземпляр переменной переменной в Eloquent Model? - PullRequest
0 голосов
/ 20 февраля 2019

То, что я хочу сделать, это программно изменить значение переменной $ fillable .Я использую fillable метод GuardsAttributes trait, чтобы установить новые переменные.Однако, когда пользователь вызывает Model :: create фасад из контроллера, атрибут fillable не обновляется.

    $model = new Modal();
    $model->fillable(array_merge($model->getFillable(),["new_field"]));

Я хочу обновить экземпляр Post :: create новым атрибутом fillable.Я проверил сервисный контейнер, но нет ничего похожего на модель, сработавшую там.Итак, как я могу обновить текущий экземпляр модели?

1 Ответ

0 голосов
/ 20 февраля 2019

Это потому, что $model->fillable() является функцией экземпляра: определено для экземпляра Model;поэтому, когда вы изменяете переменную $ fillable, вы изменяете ее только для этого конкретного экземпляра модели.Вместо этого функция Model::create() является статической и динамически определяется только в классе Model.

Попробуйте выполнить это в следующей последовательности:

$model = new Model();
$model->fillable(array_merge($model->getFillable(),["new_field"]));
$model->fill($your_data)->save();

В качестве альтернативы вместо установки fillable () для каждой модели, которую вы используете.может попытаться установить unguarded = true для класса при запуске приложения:

Model::unguard(true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...