查询是不区分大小写的,但是返回的字段可是区分的,有奇葩要求,强制字段名最小化,放到Yii2里如何实现呢?其实很简单,改下驱动配置,给数据库加个参数即可。
原始数据库配置示例:
<?php
return [
'class' => 'yiidbConnection',
'dsn' => 'mysql:host=xxx;dbname=xxx',
'username' => 'root',
'password' => '123456',
'charset' => 'utf8',
];
加入强制字段最小化后的配置示例:
<?php
return [
'class' => 'yiidbConnection',
'dsn' => 'mysql:host=xxx;dbname=xxx',
'username' => 'root',
'password' => '123456',
'charset' => 'utf8',
'attributes' => [
PDO::ATTR_CASE => PDO::CASE_LOWER,
]
];
PDO其他参数参考:
array(
// 强制 PDO 获取的表字段字符的大小写转换,或原样使用列信息
PDO::ATTR_CASE => PDO::CASE_LOWER,
// 执行出错时抛出异常
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
// 将返回的空字符串转换为 SQL 的 NULL
PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
// 返回数据的时候不将数值转换为字符串
PDO::ATTR_STRINGIFY_FETCHES => false,
// 设置为false禁止PDO模拟预处理语句,而使用真正的预处理语句,即有MySQL执行预处理语句
PDO::ATTR_EMULATE_PREPARES => false,
));
以上内容参考自:
https://learnku.com/articles/31448
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。