Zend DB多个连接不起作用

时间:2013-01-04 13:33:21

标签: php zend-db

我有以下代码,这种方式不起作用。

    $query = $this->select()
    ->from(array('c' => 'contrato'),
            array('*'))
            ->setIntegrityCheck(false)
            ->join(array('ch'   => 'contrato_host'),'ch.id_host         = '.$id_host.' and ch.id_contrato = c.id_contrato', array())
            ->joinUsing('contrato_tipo', 'id_contrato_tipo', 'ds_contrato_tipo')
            ->joinUsing('fornecedor',   'id_fornecedor', 'razao_social')
    ->where('id_cliente     = ?', $id_cliente)
    ->order(array('id_contrato DESC'));



但是,当我使用它时,它就是工作的 $query = $this->select() ->from(array('c' => 'contrato'), array('*')) <br/>->setIntegrityCheck(false) <br/>->join(array('ch' => 'contrato_host'),'ch.id_host = '.$id_host.' and ch.id_contrato = c.id_contrato', array()) <br/>->where('id_cliente = ?', $id_cliente) <br/>->order(array('id_contrato DESC'));

我不知道为什么,但是当我手工编写代码时,它起作用了 $query = $this->select() ->from(array('c' => 'contrato'), array('*')) <br/>->setIntegrityCheck(false) <br/>->join(array('ch' => 'contrato_host'),'ch.id_host = '.$id_host.' and ch.id_contrato = c.id_contrato', array()) <br/>->where('id_cliente = ?', $id_cliente) <br/>->order(array('id_contrato DESC'));

3 个答案:

答案 0 :(得分:0)

如果您可以格式化其他代码块,将会很有帮助。 还请发布以下值:

echo $query->__toString();

答案 1 :(得分:0)

之前我没有使用过“joinUsing”函数,可能会尝试这样做:

$query = $this->select()
              ->from(array('c' => 'contrato'), array('*'))
              ->setIntegrityCheck(false)
              ->join(array('ch' => 'contrato_host'),'ch.id_host = '.$id_host.' and ch.id_contrato = c.id_contrato', array())
              ->join(array('ct' => 'contrato_tipo'), 'ct.id_contrato_tipo = c.id_contrato_tipo', 'ds_contrato_tipo')
              ->join(array('f' => 'fornecedor'), 'f.id_fornecedor = c.id_fornecedor', 'razao_social')
              ->where('c.id_cliente = ?', $id_cliente)
              ->order(array('c.id_contrato DESC'));

答案 2 :(得分:0)

$query = $this->select()
->from(array('c'=>'contrato'),
        array('*'))
        ->setIntegrityCheck(false)
        ->join(array('ch'=>'contrato_host'),'ch.id_host='.$id_host.' and ch.id_contrato = c.id_contrato', array())
        ->join('contrato_tipo','id_contrato_tipo','ds_contrato_tipo',array())
        ->join('fornecedor','id_fornecedor', 'razao_social',array())
->where('id_cliente= ?',$id_cliente)
->order(array('id_contrato DESC'));