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())
            ->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'));



SELECT contrato.*, contrato_tipo.ds_contrato_tipo, fornecedor.razao_social FROM [action].[dbo].[contrato] INNER JOIN [action].[dbo].[contrato_host] ON [contrato_host].id_host = 14 and [contrato_host].id_contrato = [contrato].id_contrato INNER JOIN [action].[dbo].[contrato_tipo] ON contrato_tipo.id_contrato_tipo = contrato.id_contrato_tipo INNER JOIN [action].[dbo].fornecedor ON fornecedor.id_fornecedor = contrato.id_fornecedor WHERE ([contrato].id_cliente = '1') ORDER BY "id_contrato" DESC

4

3 回答 3

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'));
于 2013-01-04T13:54:27.283 回答
0

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

echo $query->__toString();
于 2013-01-04T13:43:53.697 回答
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'));
于 2013-01-04T14:28:53.727 回答