Yii模型:将表名转换为小写

时间:2016-02-04 11:59:02

标签: php mysql yii model naming-conventions

使用Yii的现有应用程序可以正常使用一个数据库,该数据库的所有表都以大写字母开头(是的,我知道,这不是一个好的场景,但它就是这样),例如,varchar2() 。因此,活动模型中指定的表名也是Users

但是,我不得不在另一台服务器上部署应用程序,数据库脚本在那里使用小写自动创建数据库中的表。现在,Yii模型中代码中的表名是Users,而数据库中的实际名称是Users,由于Yii无法在数据库中找到表,因此最终会在运行时爆炸。

我可以浏览所有模型并手动将大写更改为小写,但是,我认为应该有一种更聪明的方法吗?

2 个答案:

答案 0 :(得分:0)

首先在新服务器上的my.cnf或my.ini文件中更新以下行,在新服务器中应为1,因此要么只是注释此条目,要么设置为0 -

lower_case_table_names = 0

然后再次在此服务器上恢复备份。

注意:现有数据库不起作用,因此需要从旧服务器备份再次恢复整个数据库。

答案 1 :(得分:0)

您可以通过更新

中的yii框架CActiveRecord文件来实现
path : yii/framework/ar/CActiveRecord.php

将tableName函数更改为

public function tableName()
{
    return strtolower(get_class($this));
}

但此更改将影响所有其他yii项目。