使用Yii CActiveDataProvider时如何使用关系连接2个模型

时间:2014-01-12 17:52:06

标签: php mysql yii

我想使用2个模型将数据导出到Excel。 HasilPutusan model and DetilSaksi model.

当我使用模型 HasilPutusan 的CActiveDataProvider时,我设法将所有数据与与此HasilPutusan模型相关的数据关系一起获取。

如何使用模型 DetilSaksi 组合数据?

我的控制器:

public function actionCetakjalanperistiwa()
{
    if(isset($_POST['PrintJaper'])){
        $data = $_POST['id_kecelakaan'];
        if($data==''){
            return false;
        }else{
            $dataProvider=new CActiveDataProvider('HasilPutusan', array(
                'criteria'=>array(
                    'condition'=>'id_kecelakaan=:id',
                    'params'=>array(':id'=>$data),
                ),
            ));
        }
        $this->widget('ext.EExcelView', array(
            'grid_mode'=>'export',
            'title' => 'Data Jalan Peristiwa',
            'dataProvider' => $dataProvider,
            'exportType'=>'Excel2007',
            'columns'=>array(
                'id_hasil_putusan',
                'id_detil',
                'id_kapal',
                'idKapal.nama_kapal',
                'idKapal.tahun_pembuatan',
                'idKapal.konstruksi',
                'idKapal.isi_kotor',
                'idKapal.tenaga_penggerak_utama',
                'idKapal.pemilik',
                'idKapal.nakhoda',
                'idKapal.awak_kapal',
                'idKapal.surat_kapal',
            ),
        ));
    }else{
        $this->render('_japer');    
    }
}

在我的tbl_hasil_putusan表中,我有一个 id_detil 字段,我将用它来使用DetilSaksi模型对第二个表重新执行查询。

我的数据库: enter image description here

enter image description here

如何组合可以连接的两个表,以便我可以在第二个表中调用相关的(蓝色箭头)数据?

由于

1 个答案:

答案 0 :(得分:2)

您可以在条件数组中使用join。像这样:

$dataProvider=new CActiveDataProvider('HasilPutusan', array(
'criteria'=>array(
    'condition'=>'id_kecelakaan=:id',
    'select' => 't.*, ds.*'
    'join' => 'LEFT JOIN tbl_detil_saksi ds on ds.id_detil = t.id_detil',
    'params'=>array(
        ':id'=>$data),
     ),
));