Laravel 5.3 Создание возвращаемых моделей «Поле не имеет значения по умолчанию»

Я использую Laravel и Eloquent в течение двух лет, и сегодня я решил установить новый Laravel 5.3 и попробовать что-то с ним.

Я использовал мою прежнюю схему базы данных и создал свои модели, определил заполняемые столбцы. Вот как выглядит моя модель Page :

 <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Page extends Model { /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'language', 'title', 'slug', 'url', 'description', 'tags', 'wireframe', 'order', 'is_active' ]; public function menus() { return $this->belongsToMany(Menu::class); } } 

Атрибут url – это столбец типа TEXT в MySQL, поэтому, если я не передаю ему никакого значения при создании модели, он должен быть пустой строкой. Вместо этого я продолжаю получать SQLSTATE[HY000]: General error: 1364 Field 'url' doesn't have a default value .

Вот моя попытка создать модель Post:

 Page::create([ 'title' => $root_menu['title'], 'slug' => $root_menu['slug'], 'language' => $this->language, 'wireframe' => key(config('cms.wireframe')), 'order' => 0 ]); 

Является ли это проблемой, связанной с Laravel 5.3, или я что-то упускаю? Заранее благодарим за помощь.

Причина ошибки объясняется @Nicklas.

Причина, по которой это происходит сейчас, заключается в том, что Laravel 5.3 по умолчанию использует strict режим для MySQL.

Если вы хотите вернуться к предыдущему поведению, обновите файл config/database.php и установите для него 'strict' => false .

Вы пытаетесь вставить объект без атрибута «URL» в таблицу с столбцом «URL» без значения по умолчанию. Таким образом, база данных не может знать, что делать с этим столбцом.

Вы можете сделать одну из трех вещей.

  1. Заполните значение URL в
  2. Измените свою схему, чтобы разрешить нулевую вставку по URL-адресу
  3. Измените схему URL, чтобы включить значение по умолчанию. (пустая строка)

Отправьте свою миграцию или схему, если вам нужна дополнительная помощь.