Php Yii框架:使用两个表中的详细信息创建CActiveDataProvider
我在问题表和硬件细节表之间有如下数据库关系。 问题和硬件细节有多对多的关系。tbl_quenceHardwareDiatial表还包含另一个名为answer的新属性 我想创建活动数据提供程序(CActiveDataProvider),其中包含给定硬件细节的问题列表和相关答案 我已经使用以下标准针对给定硬件细节提出了相关问题Php Yii框架:使用两个表中的详细信息创建CActiveDataProvider,php,yii,Php,Yii,我在问题表和硬件细节表之间有如下数据库关系。 问题和硬件细节有多对多的关系。tbl_quenceHardwareDiatial表还包含另一个名为answer的新属性 我想创建活动数据提供程序(CActiveDataProvider),其中包含给定硬件细节的问题列表和相关答案 我已经使用以下标准针对给定硬件细节提出了相关问题 $quesionsDataProvider=new CActiveDataProvider('Question', array( 'criteria'
$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,
),
));
但是我怎样才能将答案附加到检索到的问题列表中呢
提前谢谢你的帮助
您可以创建更加灵活的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”=如果使用除“id”以外的其他主键字段,则应提及keyField
进一步阅读您可以创建更加灵活的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”=如果使用除“id”以外的其他主键字段,则应提及keyField
进一步阅读如果你想附上问题的答案,你需要做的就是:
$quesionsDataProvider=new CActiveDataProvider('Question', array(
'criteria'=>array(
'with'=>array('answers', 'hardwaredetails'=>array( // etc...
因此,只需添加问题模型与答案模型之间关系的名称。如果您想将答案附加到问题,则只需执行以下操作:
$quesionsDataProvider=new CActiveDataProvider('Question', array(
'criteria'=>array(
'with'=>array('answers', 'hardwaredetails'=>array( // etc...
因此,只需添加问题模型与答案模型之间关系的名称。该图不符合您对关系的描述,因此,它正确地解释了tbl_问题和tbl_硬件细节之间的多对多关系。而包含多对多关系的表是tbl______________________________。它添加了名为answerquestion和hardwaredetail的字段没有直接关系是的,因为它是多对多关系,所以图表不符合您对关系的描述。为什么,它正确地解释了tbl_问题和tbl_hardwaredetail之间的多对多关系。而包含多对多关系的表是tbl______________________________。它添加了一个名为answerquestion的字段,而hardwaredetail没有直接关系是的,因为它是多对多关系