Yii CActiveDataProvider with()和join

时间:2014-08-18 09:46:52

标签: php sql join yii cactivedataprovider

我希望CGridView中的每个相关对象都有单独的行。

ModelB有modelAId,所以它是HAS_MANY关系。

以下查询返回我想要获取的内容:

select * from modelA a
join modelB b on b.modelAId = a.id

这里我为每个相应的modelB行获取单独的行,来自modelA的记录可能会重复。

但是,以下提供程序未返回预期记录,如何在CActiveDataProvider中使用它?

$provider = new CActiveDataProvider ("ModelA", array ("criteria" => array (
            "with" => array("ModelB")
            )
        ));

如果我添加加入“join”=> “在b.modelAId = t.id上加入modelB b”,并用()删除它给出正确的记录,但是当我包含with()时它只给出了modelA记录。

从ModelA获取数据的正确方法是什么?包含ModelB关系的单独行?

1 个答案:

答案 0 :(得分:0)

您可以轻松地使用 cDbCriteria

$criteria=new cDbCriteria();
$criteria->with=array('ToModelB'); //Here ToModelB is defined relation in ModelA to ModelB
$dataProvider=new CActiveDataProvider('ModelA',array('criteria'=>$criteria));

但在此之前,请确保为这两个模型定义了正确的关系。