我在 问题表 和 硬件详细信息表 之间存在以下数据库关系。 问题和 HardwareDetail 有很多关系。和 tbl_quesionhardwaredetial 表包含另一个名为 answer 的新属性
我想创建活动数据提供程序(CActiveDataProvider),其中包含给定硬件详细信息的问题列表和相关答案。
我已根据以下标准提取给定硬件详细信息的相关问题。
$quesionsDataProvider=new CActiveDataProvider('Question', array(
'criteria'=>array(
'with'=>array('hardwaredetails'=>array(
'on'=>'hardwaredetail_Id=' .$modelHD->Id,
'together'=>true,
'joinType'=>'INNER JOIN',
)),
),
'pagination'=>array(
'pageSize'=>10,
),
));
但是我如何将答案附加到检索到的问题列表中。
提前感谢您提供任何帮助
。
答案 0 :(得分:3)
您可以创建更灵活的CSqlDataProvider,而不是创建CActiveDataProvider,您可以手动编写SQL查询
示例:
$dataProvider = new CSqlDataProvider($qry, array(
'keyField' => 'id',
'totalItemCount' => $count,
'sort' => array(
'attributes' => array('field1','field2')
),
'pagination' => array(
'pageSize' => 5
)
)
);
$ qry =用于选择记录的SQL查询
$ count =没有记录(你应该修改$ qry以上来查找记录数)
'keyField'=你应该提到keyField,如果你使用'id'以外的其他主键字段
进一步阅读CSqlDataProvider
答案 1 :(得分:1)
如果您想附上问题的答案,您只需要这样做:
$quesionsDataProvider=new CActiveDataProvider('Question', array(
'criteria'=>array(
'with'=>array('answers', 'hardwaredetails'=>array( // etc...
所以只需添加问题模型与答案模型的关系名称。