【问题标题】:Please guide me what is wrong with this query in zend framework请指导我在zend框架中这个查询有什么问题
【发布时间】:2011-05-10 12:03:02
【问题描述】:

我有两个表用户和资产,外键是 user_id。我想要用户详细信息和每个用户资产的计数所以,我写了如下查询但没有获取记录。请帮帮我。

$users = $this->select() ->从(数组('u' => '用户'), 数组('名字')) ->joinLeft(数组('a' => 'assets'), 'u.id = a.user_id', 数组('asset_per_user' => 'COUNT(a.id)')) ->组('u.id');

【问题讨论】:

  • 你叫“$result = $this->fetchAll($users);”稍后的?如果是,您是否收到任何错误消息?
  • 是的,但是会出现这种类型的错误“选择查询无法与另一个表连接”。
  • 在这种情况下,regilero 给出了正确的答案。

标签: zend-framework


【解决方案1】:

'选择查询不能与另一个表连接'

这意味着$this 在您的示例中肯定是一个Zend_Db_Table。默认情况下,从 Zend_Db_Table 中获取的选择不能执行连接(因为它们默认用于 Active Record 操作)。

添加:

$users->setIntegrityCheck(false);

而且这条错误消息会消失。 SQL查询我还没查,可能是对的。

【讨论】:

    【解决方案2】:

    http://framework.zend.com/manual/1.11/en/zend.db.table.html

    参见示例 #28“删除 Zend_Db_Table_Select 上的完整性检查以允许 JOINed 行”

    【讨论】:

      【解决方案3】:

      我也遇到过同样的问题。这是因为您正在连接与特定表无关的数据库表。所以,我们需要关闭完整性测试。可以查看详细解决方案here

      【讨论】:

      • 单独的链接是considered a poor answer,因为它本身没有意义,并且不能保证目标资源将来仍然存在。请尝试至少包含您要链接的信息的摘要。
      猜你喜欢
      • 2011-06-12
      • 1970-01-01
      • 2011-09-29
      • 2011-10-13
      • 1970-01-01
      • 2010-09-07
      相关资源
      最近更新 更多