Laravel ошибка при добавлении в БД
При добавлении в БД возникает ошибка
SQLSTATE[HY000]: General error: 1364 Field 'age' doesn't have a default value (SQL: insert into
items() values ())
В protected $fillable в модели все необходимые поля есть. Код контроллера ниже:
public function postAdd(Request $request){
dump($request->all());
$this->validate($request, [
'name' => 'required',
]);
$girl_data = $request->all();
$item = new Item;
$item->save();
}
Метод dump показывает, что в модель записываются все значения из полей формы. Но если, например, использовать настройку 'strict' => true, в config.php, то ошибки не возникает, но в таблицу записывается строка с нулями. Хотелось бы разобраться.
Ответы (1 шт):
Всё просто! При создании новой записи в таблицу БД необходимо заполнять все значения имеющиеся у этой таблицы столбцов, кроме тех которые присваиваются автоматически или имеют значения по умолчанию Пример:
Schema::create('products', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('user_id')->default('1');
$table->string('name');
$table->integer('old_price');
$table->timestamps();
});
1) Здесь значения полей ($table->bigIncrements('id');) и ($table->timestamps();) вставляются автоматически.
2) Значения полей ($table->string('name');) и ($table->integer('old_price');) необходимо вставлять обязательно.
3) А Значение поля ($table->integer('user_id')->default('1');) вставлять необязательно т.к. оно имеет значение по умолчанию (->default('1')) и если его забыть прописать оно будет равно единице!
Конкретно Ваша ошибка говорит о том что поле "age" не заполнено и не имеет значений по умолчанию.