查询是不区分大小写的,但是返回的字段可是区分的,有奇葩要求,强制字段名最小化,放到Yii2里如何实现呢?其实很简单,改下驱动配置,给数据库加个参数即可。

原始数据库配置示例:

<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=xxx;dbname=xxx',
'username' => 'root',
'password' => '123456',
'charset' => 'utf8',
];

加入强制字段最小化后的配置示例:

<?php
return [
'class' => 'yii\db\Connection',
'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

Related Posts: Yii2 MySQL返回字段强制最小化方法 :

avatar