[英]Yii CActiveDataProvider with() and join
我想要在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(),它将给出正确的记录,但是当我包含with()时,它仅给出modelA记录。
从ModelA获取数据(包括用于ModelB关系的单独行)的正确方法是什么?
您可以以终极轻松的方式使用cDbCriteria
$criteria=new cDbCriteria();
$criteria->with=array('ToModelB'); //Here ToModelB is defined relation in ModelA to ModelB
$dataProvider=new CActiveDataProvider('ModelA',array('criteria'=>$criteria));
但是在此之前,请确保为这两个模型定义了适当的关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.