Невозможно создать оператор с помощью sql в Zend \ Db \ Sql \ Select

Я пытаюсь получить данные с предложением 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(); Произведенный запрос успешно выполняется в моем phpmyadmin.

Но когда я на самом деле запустить код, ошибка показывает,

Оператор не может быть создан с помощью sql: SELECT COUNT (1) AS C ОТ (ВЫБРАТЬ com,name КАК com_name, cre,amount КАК cre_amount, cre,status КАК cre_status, cre,paid КАК cre_paid, cre,created_on КАК cre_created_on, cre,approval_date КАК cre_approval_date, u,first_name КАК u_first_name, u,last_name КАК u_last_name, CONCAT (u.first_name, «», u.last_name) AS approved_by, cre,due_date КАК cre_due_date, cre,id КАК cre_id ОТ credit КАК cre ВНУТРЕННЕЕ СОЕДИНЕНИЕ company КАК com НА cre,account_id знак равно com,account_id ЛЕВЫЙ РЕЙТИНГ user КАК u НА cre,approved_by знак равно u,id ЛЕВЫЙ РЕЙТИНГ account КАК acc НА cre,account_id знак равно acc,id ГДЕ cre,created_on МЕЖДУ? А ТАКЖЕ ? ЕСТЬ (cre,paid знак равно А ТАКЖЕ cre,status знак равно А ТАКЖЕ cre,due_date > =?) ИЛИ (cre,account_id знак равно А ТАКЖЕ com,account_id знак равно А ТАКЖЕ com,credit_max_amount > =? А ТАКЖЕ cre,paid знак равно А ТАКЖЕ cre,status =?)) КАК original_select

В чем проблема? Где я не прав?

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]