【问题标题】:Yii - manually set model's table nameYii - 手动设置模型的表名
【发布时间】:2014-08-10 10:58:04
【问题描述】:

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

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

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

它发生了,因为 Yii 正在寻找 'News' 表,而在数据库中只有一个小写的news

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

Yii 从类名继承表名,有什么办法可以改吗?就像为某个变量分配一些新的表名?找不到解决办法。

谢谢

【问题讨论】:

  • 也许这对你有帮助 'link'
  • 谢谢你,tableName() 方法是解决方案!

标签: php mysql yii


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您应该将表名保持为小写。因为在 Windows 中,表的大小写敏感永远不会改变。将脚本放入 Linux 后,它会全部变为小写。每个主机都可能是 Linux 服务器……所以请记住。

    【讨论】:

    • 问题是我的表名是小写的,问题是Yii正在搜索大写的表名,因为类名也是大写的。无论如何,我已经在 Bahrami-Reza 的链接中找到了解决方案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多