2017-01-30 1 views
0

Я использую laravel 5.3, и в моей пользовательской модели у меня есть некоторые защищенные поля, как показано ниже.Как добавить значение защищенных полей в базу данных

protected $guarded = ['id', 'tnant_id', 'org_id', 'fac_id', 'slug', 'created_at', 'updated_at', 'deleted_at']; 

Теперь, когда я пытаюсь добавить запись, используя следующие.

CUSTOM::create(['tnant_id'=>123]); 

Это возвращает меня к следующей ошибке.

Field 'tnant_id' doesn't have a default value. 

Установка значение поля по умолчанию в таблице не будет работать, потому что каждый раз, когда я прохожу значение, и это дает ошибку для всех охранявших полей.

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

+2

вместо 'CUSTOM :: create ('tnant_id' => 123);' try' $ custom = new CUSTOM(); $ custom-> tnant_id = '123'; $ Пот-> Save(); ' – xhulio

ответ

1

Вы просто не можете. Model::create(array $attributes = []) использует метод fill(array $attributes = []), который, можно сказать, отфильтровывает все охраняемые атрибуты, поэтому они не будут назначены. Итак, с точки зрения создания tnant_id будет null.

Я придумал два способа сделать это:

  1. создать новый экземпляр модели
  2. установить свой атрибут
  3. сохранить (упорствовать) это dabase;

Итак:

$model = new Model; 
$model->tnant_id = 123; 
$model->save(); 

B Это скорее обновление, чем создать, но, может быть полезным для вас.

  1. Измените свою схему БД, чтобы разрешить нулевые значения для вашего атрибута или установить значение по умолчанию.
  2. создать модель с использованием модели :: create()
  3. установить атрибут & обновление.

Итак: Предполагая, что вы используете миграции, в вашем использовании миграции файла:

Schema::create(.. 
    $table->integer('trant_id')->nullable(); 
    //OR 
    $table->integer('trant_id')->default(0); 
...); 

Примечание: Это трудно сказать, какой из них больше подходит для вас вариант использования, но я вижу, ваш атрибут называется trant_id, что является некоторой формой отношения, я думаю, поэтому я предлагаю вам взглянуть на Eloquent's relationship, что может быть лучшим ответом.