您好我遇到了区分大小写的问题,我正在开发可以使用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') ;
如何更改为始终不需要区分大小写的数据库列名称?
答案 0 :(得分:0)
Laravel不对数据库引擎的区分大小写负责。在这种情况下,MySQL和PostgreSQL有不同的规则。
您可以通过多种方式编写更好的代码:
使用命名标准:Laravel Eloquent属性和SQL列名称应为蛇形
使用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) ;