【问题标题】:Zend DB Table doesn't see the FROM clauseZend DB Table 没有看到 FROM 子句
【发布时间】:2011-04-07 04:49:34
【问题描述】:

我有一个 Zend DB Table 类来包装我的 Country 表。当我从它创建一个选择对象时,它告诉我在我的 SQL 语句中没有 FROM 子句。代码如下:

$table = new Application_Model_DbTable_Countries();
$rows = $table->fetchAll($table->select()->columns(array('id', 'name')));       
$countryList = (array) $rows;

如果我在 ->select() 之后立即包含 ->from('Countries'),则表示“选择查询不能与另一个表连接”。

我做错了什么?

谢谢!

【问题讨论】:

  • 我知道这听起来像是一个愚蠢的问题,但是您是否在 Application_Model_DbTable_Countries 类中指定了受保护的 $_name 变量?

标签: zend-framework


【解决方案1】:

当你使用 columns 命令时,你必须像这样使用 from 调用来指定表

$rows = $table->fetchAll($table->select()->from( 'tablename')->columns(array('id', 'name')));

我不完全确定为什么,但我认为这是因为一旦您开始使用列调用并构建自己的选择,Zend 假设您可能正在执行连接和其他魔术。

即使你在表类中指定了 $_name 变量,它也会给你这个错误。

我相信你也可以做到以下几点:

$rows = $table->fetchAll($table->select(true)->columns(array('id', 'name')));

这将告诉选择从表格类中包含表格。

【讨论】:

  • 不,金的问题。我会假设第二种方法会有所帮助。我之所以这么说,是因为在您的帖子中说您尝试了我提到的第一种方法,但没有奏效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-08
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多