У меня работает Lumen 5.8, и у меня есть таблица и база данных, в которую я хочу добавить игры, я использую это для своей миграции:
Schema::create('games', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('slug');
$table->string('name');
$table->softDeletes();
$table->timestamps();
$table->charset = 'utf8mb4';
$table->collation = 'utf8mb4_unicode_ci';
});
Как видите, я установил кодировку исверка.
Также я добавил в .env
:
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
ТАК, когда я пытаюсь добавить игру типа Pokémon
$game = new Game();
$game->slug = "pokemon-red"
$game->name = "Pokémon Red"
$game->save();
Я получаю
SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE3\xA9mon-...' for column 'slug' at row 1 (SQL: insert into `games` (`slug`, `name`, `updated_at`, `created_at`) values (pokmon-white-version-2, Pokémon White Version 2, 2019-04-08 05:28:57, 2019-04-08 05:28:57))
Я не уверен, почему я все еще получаю ошибку.Я могу вставить его непосредственно в поле в PHPMyAdmin без проблем, поэтому я предполагаю, что он как-то связан с Lumen.
Для справки я сначала нашел это, и поэтому все установлено в utf8mb4:
Невозможно вставить китайский язык в базу данных mysql через кодировку utf8 (предупреждение 1336 неверное строковое значение)
Я специально убедился, что нужно войти и вставить запись в PHPMyAdmin, и это сработало,что заставляет меня верить, что это проблема конфигурации Lumen.