【问题标题】:Cakephp 3 inner join with count and group by not workingCakephp 3内部加入计数和组不工作
【发布时间】:2018-11-22 10:59:59
【问题描述】:
$options = array(
    'fields' => array(
        'item_requirements.*',
        'COUNT(`item_requirements`.`quantity_required`) as count'
    ),
    'joins' => array(
        'INNER JOIN `items` AS item_requirements ON `item_requirements`.`item_id` = `items`.`id`'
    ),
    'group' => '`item_requirements`.`item_id`',
    'contain' => array(
        'items' => array('fields' => array('name', 'specification'))
    )
);
$query = $this->Indents->ItemRequirements->find('all', $options);

错误:SQLSTATE[42601]:语法错误:7 错误:零长度分隔标识符在“”“”第 1 行或附近:...item_requirements`.`quantity_required`) AS "counts"" AS "COU. .. ^

出现上述错误..解决这个问题的任何解决方案..

【问题讨论】:

  • 您能否将生成的实际 SQL 查询包括在内?
  • 查询选择BB.id item_id, BB.code || '-' || BB.sub_code || '-' || BB.name || '-' || BB.specification item_details, AA.quantity_required concurrent_quantity from (select a.item_id, sum(a.quantity_required) quantity_required from tms.item_requirements a group by a.item_id) AA内连接(select b.id, b.code, b.sub_code , b.name, b.specification, b.unit_qty_code_id from tms.items b) BB on BB.id=AA.item_id ;
  • 您是否尝试过用不那么模棱两可的方式替换别名 count
  • 您在此处共享的查询是否与它生成的完全相同?从您发布的代码中,我看不出所有 AA 和 BB 是如何形成的。如果您在发布前进行了编辑,则可能会意外更改某些内容。
  • 这是针对上述情况的查询(select a.item_id, sum(a.quantity_required) quantity_required from tms.item_requirements a group by a.item_id)AA内连接(select b.id, b .code, b.sub_code, b.name, b.specification, b.unit_qty_code_id from tms.items b)

标签: postgresql cakephp cakephp-3.0 query-builder


【解决方案1】:

问题在于 item_requirements.*。 cake ORM 不支持.*

您可以使用->autoFields(true) 选项。参考this答案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    相关资源
    最近更新 更多