Zend_Db_Table_Abstract $_name 不工作

发布于 2024-12-25 08:24:00 字数 314 浏览 2 评论 0原文

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

class Application_Model_DbTable_Game extends Zend_Db_Table_Abstract
{

protected $_name = 'games';

错误:

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

帮助我...它应该很简单!

*编辑 这里的问题是 Zend Framework 应该检测到从默认的“game”到“games”的更改表名称。

I encountered a problem regarding changing default table name

class Application_Model_DbTable_Game extends Zend_Db_Table_Abstract
{

protected $_name = 'games';

Error:

Message: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'gamenomad_dev.game' doesn't exist

Help me... it's supposed to be simple!

*EDIT
The problem here is that Zend Framework is supposed to detect the changed table name from the default 'game' into 'games'.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云归处 2025-01-01 08:24:00

在 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/手册/en/zend.db.table.html

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

您可以尝试将其与某些配置文件结合起来并从那里加载表名称,但 ZF 仍然不知道有关底层数据库更改的任何信息。

In ZF you have to hardcode your database table to model. It doesn't scan for database changes. You have two ways:

Create class with table name

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

If you want to use ZF's default paths, you should put DBTable model into application/models/dbtable directory and name your class like Application_Model_DbTable_Game - then ZF knows it has to look for game table

Create class with any name

e.g. ExtraGameTable and set its parameters to show table name:

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

As stated in documentation: http://framework.zend.com/manual/en/zend.db.table.html

If you don't specify the table name, it defaults to the name of the
class. If you rely on this default, the class name must match the
spelling of the table name as it appears in the database.

You may try to combine it with some configuration file and load table names from there, but still - ZF won't know anything about underlying database changes.

在风中等你 2025-01-01 08:24:00

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

Show the actual line and stacktrace to your problem, maybe you are generating your query in a way it doesn't read the actual table name.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文