繁体   English   中英

Yii CActiveDataProvider with()和加入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM