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

他のコードブロックをフォーマットできると便利です。また、以下から値を投稿してください。

echo $query->__toString();
于 2013-01-04T13:43:53.697 に答える
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
$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 に答える