Я не понял, каков эффект параметра default
в переносах.
Я вижу, что столбец в базе данных определяется значением по умолчанию, но модели полностью игнорируют его. Скажем, у меня есть модель Book
, которая отражает таблицу books
в базе данных. У меня есть миграция для создания таблицы книг:
Schema::create('bools', function (Blueprint $table) {
$table->increments('id');
->string('author');
->string('title');
->decimal('price', 4, 1)->default(100);
->timestamps();
});
Когда я создаю новый экземпляр модели Book
, я вижу:
$book = new Book();
var_dump($book->price); //Always 0...
Значение по умолчанию игнорируется, и атрибут не устанавливается правильно. Хорошо, я могу получить его, потому что это новый объект, и он не должен получать значения по умолчанию из БД. Но, если я пытаюсь сохранить модель, например:
$book = new Book();
$book->author = 'Test'
$book->title = 'Test'
$book->save();
Он сохраняет 0 в поле price
в базе данных!
Итак, какова точка параметра default
в миграциях?
Кстати... Было бы не лучше, если модель увидит внутри миграции (если существует), какие типы полей и поведение вместо этого определяют ее вручную в модели и миграции? И более того, даже для автоматического создания валидатора для модели. Я думаю, что это было возможно с небольшим изменением структуры миграции, так почему это не так?