Sql Zend框架中具有左连接的多个条件

Sql Zend框架中具有左连接的多个条件,sql,join,zend-framework,zend-db,Sql,Join,Zend Framework,Zend Db,我在使用Zend Framework时遇到了一个问题。基本上,我正在尝试使用左连接在子查询中添加AND运算符。请查看我的代码正在生成的以下查询: 选择'd`.*,将'deal'中的(状态)计数为'd'左加入'payments'。deal\u id='d`。deal\u id按'd'分组。'deal\u id'按'created\u date'描述订单 代码是: $select = $this->_db->select() ->from(array('d'=

我在使用Zend Framework时遇到了一个问题。基本上,我正在尝试使用左连接在子查询中添加AND运算符。请查看我的代码正在生成的以下查询:

选择'd`.*,将'deal'中的(状态)计数为'd'左加入'payments'。deal\u id='d`。deal\u id按'd'分组。'deal\u id'按'created\u date'描述订单
代码是:

    $select = $this->_db->select()
      ->from(array('d'=>'deal'))                       
      ->joinLeftUsing('payments', 'deal_id', array('count(status)'))
      ->order("created_date $sortOrder")
       ->group("d.deal_id");
但是,我想在我的子查询中再添加一个条件,即Status=1,请查看我愿意获得的以下输出

SELECT `d`.*, count(status) FROM `deal` AS `d` LEFT JOIN `payments` ON `payments`.deal_id = `d`.deal_id AND status = 1 GROUP BY `d`.`deal_id` ORDER BY `created_date` desc  
如果有人对我如何实现同样的目标有想法,请告诉我

谢谢,
Gagz

我建议使用joinLeft而不是joinLeftUsing

$select = $this->_db->select()
      ->from(array('d'=>'deal'))                       
      ->joinLeft('payments', 'payments.deal_id = d.deal_id and status = 1', 
                 array('count(status)'))
      ->order("created_date $sortOrder")
      ->group("d.deal_id");
给我

SELECT `d`.*, count(status) FROM `deal` AS `d`
LEFT JOIN `payments` ON payments.deal_id = d.deal_id and status = 1 
GROUP BY `d`.`deal_id` ORDER BY `created_date ` ASC

我们可以在Zend 3中使用表达式:

$join = new \Zend\Db\Sql\Expression('contractor_jobs.contractor_id = contractor_info.contractor_id AND 
                            contractor_jobs.job_trade_id = '.$variableName.' ');

    $select->join(
        'contractor_jobs',
        $join,
        array('job_trade_id'),
        $select::JOIN_LEFT
    );
它对我有用。您也可以根据您的情况进行检查。谢谢你问这个问题