Yii - 手动设置模型的表名


Yii - manually set model's table name

我用 Yii 编写了自己的小管理脚本。在本地主机上制作和测试,工作正常。

现在,当我将文件传输到托管环境时,我收到如下错误:

'The table `News` for active record class `News` cannot be found in the database.'

发生这种情况是因为Yii正在寻找"新闻"表,而在数据库中只有一个小写news表。

我认为MySQL中的一些设置使我的数据库表区分大小写或其他内容。无论如何,我无法更改这些设置,因为我不拥有服务器。

Yii 从类名继承表名,有什么办法可以改变吗?比如将一些新表名附加到某个变量?找不到解决方案。

谢谢

你的表名都应该是小写的,因为如前所述,Unix和Windows的行为不同。但是您的所有模型中都有一种方法tableName().您可以在此处指定模型应使用的表名:

public function tableName()
{
    return 'news';
}

您应该将表名保留为小写。因为在 Windows 中,表区分大小写永远不会改变。一旦你把脚本放在Linux中,它会全部变为小写。每个主机都可能是Linux服务器...所以请记住这一点。