1

我想为 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")
            )
        ));

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

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

4

1 回答 1

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));

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

于 2014-08-18T10:00:00.820 回答