0

我遇到了关于更改默认表名的问题

class Application_Model_DbTable_Game extends Zend_Db_Table_Abstract
{

protected $_name = 'games';

错误:

消息:SQLSTATE[42S02]:未找到基表或视图:1146 表 'gamenomad_dev.game' 不存在

帮帮我……应该很简单!

*编辑这里的问题是 Zend 框架应该检测从默认的“游戏”到“游戏”的更改表名。

4

2 回答 2

0

在 ZF 中,您必须将数据库表硬编码为模型。它不扫描数据库更改。你有两种方法:

使用表名创建类

class Game extends Zend_Db_Table_Abstract
{
    // default table name: game
}

如果您想使用 ZF 的默认路径,您应该将 DBTable 模型放入application/models/dbtable目录并将您的类命名为Application_Model_DbTable_Game- 然后 ZF 知道它必须查找game

创建任何名称的类

例如ExtraGameTable并将其参数设置为显示表名:

class ExtraGameTable extends Zend_Db_Table_Abstract
{
    protected $_name = 'game';
}

如文档中所述:http: //framework.zend.com/manual/en/zend.db.table.html

如果不指定表名,则默认为类名。如果您依赖此默认值,则类名必须与出现在数据库中的表名的拼写匹配。

您可以尝试将它与一些配置文件结合起来并从那里加载表名,但仍然 - ZF 对底层数据库更改一无所知。

于 2012-01-13T14:02:31.437 回答
0

显示您的问题的实际行和堆栈跟踪,也许您正在以不读取实际表名的方式生成查询。

于 2012-01-13T16:38:32.047 回答