你必须通过
options
数据库中的参数>连接设置为
PDO::ATTR_EMULATE_PREPARES => true
配置(>);数据库php
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
'options' => [
PDO::ATTR_EMULATE_PREPARES => true
]
],
]
默认情况下,laravel将此选项标记为
PDO::ATTR_EMULATE_PREPARES => false
以提高查询性能。
下面是关于它的简要细节。
PDO::ATTR\u EMULATE\u PREPARES
启用或禁用已准备语句的模拟。一些驱动程序不支持本机准备的语句,或者对它们的支持有限。使用此设置可以强制PDO始终模拟准备好的语句(如果驱动程序支持TRUE和模拟的准备),或者尝试使用本机准备好的语句(如果FALSE)。如果驱动程序无法成功准备当前查询,它将始终返回到模拟准备好的语句。