在laravel

时间:2017-06-14 15:24:53

标签: php laravel-5

当我尝试存储包含'ñ'和'''的记录时,Laravel会抛出以下错误:

SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: '\xE3\xB1es' for column 'names' at row 1 (SQL: insert into `clients` (`cedula`, `names`, `email`) values (5454545, Pablito Nu�es, email@dominio.com))

数据库位于utf8_general_ci,以及html。

我使用了这个mutator:

public function setNamesAttribute($value)
    {
        $this->attributes['names'] = strtr($value, 'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ', 'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');

    }

但它将其存储为“YA”而不是“n”。

关于如何解决这个问题的任何建议?

ps:我正在使用laragon和laravel 5.4

1 个答案:

答案 0 :(得分:0)

尝试utf8mb4字符集。此外,您需要将连接字符集设置为utf8mb4。因此,将 config / database.php 中的'charset'更改为'utf8mb4'

'charset' => 'utf8mb4',

例如:

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', 'localhost'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_general_ci',
    'prefix' => 'pre_',
    'strict' => false,
    'engine' => null,
],