Laravel 4 - 区分大小写的数据库列

时间:2014-01-02 11:15:00

标签: mysql database postgresql laravel case-sensitive

您好我遇到了区分大小写的问题,我正在开发可以使用mysql和postgres数据库的小程序,问题是如果我使用mysql一切都还可以,但如果我使用Postgressql,我必须更改列名称到数据库上的真实姓名。

Mysql Engine :
$clientsName = array_fetch ($clientsall, 'Name') ;
$clientsId = array_fetch ($clientsall, 'ClientId') ;

Postgres Engine:

$clientsName = array_fetch ($clientsall, 'name') ;
$clientsId = array_fetch ($clientsall, 'clientid') ;

如何更改为始终不需要区分大小写的数据库列名称?

2 个答案:

答案 0 :(得分:0)

Laravel不对数据库引擎的区分大小写负责。在这种情况下,MySQL和PostgreSQL有不同的规则。

您可以通过多种方式编写更好的代码:

  1. 使用命名标准:Laravel Eloquent属性和SQL列名称应为蛇形

  2. 使用OOP和Eloquent getter而不是解析原始SQL结果。 Eloquent是一个抽象层,允许您使用相同的语法更改数据库引擎。

答案 1 :(得分:0)

您可以使用MySQL表示法将字段名称放在变量中。然后检查db引擎是MySQL还是PostgreSQL。如果是PostgreSQL,请执行$ fieldname = strtolower($ filedname)。例如:

$f_Name = 'Name';
$f_ClientID = 'ClientID';

if ( $postgres ) {
    $f_Name = strtolower($f_Name);
    $f_ClientID = strtolower($f_ClientID);
}

//Both Engines :
$clientsName = array_fetch ($clientsall, $f_Name) ;
$clientsId = array_fetch ($clientsall, $f_ClientId) ;