Php 无法使用Zend\Db\sql\Select中的sql生成语句

Php 无法使用Zend\Db\sql\Select中的sql生成语句,php,mysql,select,zend-framework2,having-clause,Php,Mysql,Select,Zend Framework2,Having Clause,我正在尝试使用HAVING子句获取数据 这是我的密码 //Main Table $select->from(array('cre' => 'credit')); //company Table $select->join(array('com' => 'company), 'cre.account_id = com.account_id'); $select->join(array('u' => 'user'), 'cre.approved_by = u.id

我正在尝试使用HAVING子句获取数据

这是我的密码

//Main Table
$select->from(array('cre' => 'credit'));
//company Table
$select->join(array('com' => 'company), 'cre.account_id = com.account_id');
$select->join(array('u' => 'user'), 'cre.approved_by = u.id', array('first_name', 'last_name'), 'left');
$select->join(array('acc' => 'account'), 'cre.account_id = acc.id', array('id'), 'left');

$startDate = \DateTime::createFromFormat('d-m-Y H:i:s', $startDate.' 00:00:00')->format('Y-m-d H:i:s');
$endDate = \DateTime::createFromFormat('d-m-Y H:i:s', $endDate.' 23:59:59')->format('Y-m-d H:i:s');
$between = new Zend\Db\Sql\Predicate\Between('cre.'.$filter, $startDate, $endDate);

$select->having
        ->nest
        ->equalTo('cre.paid', 0)
        ->and
        ->equalTo('cre.status', 'approved')
        ->and
        ->greaterThanOrEqualTo('cre.due_date', $currentDate)
    ->unnest
    ->or
    ->nest
        ->equalTo('cre.account_id', "acc.id")
        ->and
        ->equalTo('com.account_id', "acc.id")
        ->and
        ->greaterThanOrEqualTo('com.credit_max_amount', 'sum(cre.amount)')
        ->and
        ->equalTo('cre.paid', 0)
        ->and
        ->equalTo('cre.status', 'approved')
    ->unnest;
这为我提供了正确的查询。在$select->getSqlString之后;生成的查询在my phpmyadmin中成功运行

但当我实际运行代码时,错误显示

无法使用sql生成语句:从选择com.name作为com\u名称中选择COUNT1作为C,选择cre.amount作为cre\u金额,选择cre.status作为cre\u状态,选择cre.paid作为cre\u paid,选择cre.created\u on作为cre\u created\u on,选择cre.approval\u日期作为cre\u approval\u日期,选择u.first\u名称作为cre\u first\u名称,选择u.last\u名称作为cre\u last\u姓名,选择CONCATu first\u name,u.last_name AS approved_by,cre.due_date AS cre_due_date,cre.id AS cre_id FROM cre AS cre.account内部加入公司作为com ON cre.account_id=com.account_id左加入用户作为u ON cre.approved_by=u.id左加入帐户作为acc ON cre.account_id=acc.id cre.cre在其中创建了_?和有信用卡支付=?和cre.status=?和cre.due_date>=?或cre.account_id=?和com.account_id=?和com.credit\u max\u amount>=?和cre.paid=?和cre.status=?如您所选


有什么问题?我错在哪里?

错误消息中是否有其他详细信息?