Roh*_*han 2 php laravel eloquent laravel-5
我正在使用一个包含所有大写蛇形列名称的数据库,当我使用 eloquent 获取它们时,我会执行以下操作:
foreach($data as $key => $item){
$data[$key] = array_change_key_case($item);
}
Run Code Online (Sandbox Code Playgroud)
这使得键,即列名变成小写,但很快就会变得效率低下,因为我也需要像这样嵌套数组:
foreach($tasks as $key => $task){
foreach($task['users'] as $innerKey => $user){
$task['users'][$innerKey] = array_change_key_case($user);
}
$tasks[$key] = array_change_key_case($task);
}
Run Code Online (Sandbox Code Playgroud)
而且我无法更改数据库。有没有办法让我雄辩地将列名以小写形式返回给我?
您可以使用 PDO 属性在驱动程序级别转换列名称。为此,请设置您的app/config/database.php像这样Laravel 连接选项(在 中):
return array(
'connections' => array(
'mysql' => array(
'options' => array(
PDO::ATTR_CASE => PDO::CASE_LOWER,
),
),
)
)
Run Code Online (Sandbox Code Playgroud)
这 默认情况下是PDO::CASE_NATURAL,这就是为什么你的代码将它们视为数据库已存储他们。
更新:如果你使用 MySQL,你可以考虑设置 lower_case_table_names = 2,它告诉服务器:
如果设置为 2,则表名按给定存储,但以小写形式进行比较。此选项也适用于数据库名称和表别名。
| 归档时间: |
|
| 查看次数: |
3789 次 |
| 最近记录: |