获取CakePHP中SUM函数的咨询结果

时间:2016-08-26 15:51:08

标签: mysql cakephp cakephp-3.x

我正在尝试使用sum函数执行cakephp的查询,但是没有返回预期的结果。

控制器配置为;

$PedItensOmitens = $PedItenstable->find('all', [
'fields' => array( 'item_prod, sum(item_qtd)as total'),
])->join(['b' =>[
'table' =>'om_itens',
'type' =>'INNER',
'conditions' => 'item_id = b.omi_item'
]
])->where(['b.omi_ordom ' => $ordemMontagem->om_id
])->Group(['item_prod '
]);

并且我返回消息“错误:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法中有错误;请检查手动que对应于您的MariaDB服务器版本,以便在附近使用正确的语法'AS PedItens__sum(item_qtd)第1行的完整FROM ped_itens PedItens INNER JOIN om_itens'“

使用mysql在数据库中进行查询是

select a.item_prod, sum(a.item_qtd)as total from ped_itens a inner join om_itens b on a.item_id = b.omi_item where b.omi_ordom = 1 group b a.item_prod

并给我带来预期的结果

item_prod - 总计

7 - 2400.00

9 - 5292.00

10 - 6492.00

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试用fields替换->select数组。类似的东西:

$PedItensOmitens = $PedItenstable->find()
    ->select([
        'item_prod' => 'item_prod',
        'total' => 'sum(item_qtd)'
    ])
    ->join([
        'b' =>[
            'table' =>'om_itens',
            'type' =>'INNER',
            'conditions' => 'item_id = b.omi_item'
        ]
    ])
    ->where(['b.omi_ordom ' => $ordemMontagem->om_id])
    ->Group(['item_prod'
]);

在Cake查询中指定要从中选择的表也是一个好主意,类似于原始SQL中的表。所以在选择:

'item_prod' => 'a.item_prod', // where a is your model alias
'total' => 'sum(a.item_qtd)'