2012-01-17 92 views
0

創建與細節CActiveDataProvider我有數據庫關係之間問題表硬件詳細信息表如下。 問題硬件詳情有很多關係。和tbl_quesionhardwaredetial表保存爲一個給定的硬件細節問題和相關答案列表稱爲答案Yii框架:從兩個表

我想創建活動數據提供商(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, 
      ), 
     )); 

但如何能附上答案的檢索問題清單。

預先感謝任何幫助

enter image description here

+1

該圖不符合您對關係描述 – 2012-01-17 17:05:29

+0

爲什麼它正確解釋了tbl_question和tbl_hardwaredetail之間的多對多關係。和持有多對多關係的表是tbl_quetionhardwaredetial。它增加了一個叫做答案 – KItis 2012-01-17 17:22:09

+0

的問題和hardwaredetail沒有直接關係 – 2012-01-17 17:28:03

回答

3

而不是創造CActiveDataProvider您可以創建CSqlDataProvider哪個更靈活,你可以手工編寫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'=你應該提到關鍵字段,如果你如果想要的答案附加到問題的所有你所要做的使用比「身份證」

進一步閱讀CSqlDataProvider

+0

謝謝你的回答 – KItis 2012-01-18 04:52:49

1

其他不同的主鍵字段是:

$quesionsDataProvider=new CActiveDataProvider('Question', array(
     'criteria'=>array(
      'with'=>array('answers', 'hardwaredetails'=>array( // etc... 

所以,只需添加問題模型與答案模型的關係的名稱即可。