2012-07-04 183 views
2

今天我掙扎着一個problem,但自己設法解決了它。 現在我有另一個問題。我發現在這種情況下最好使用CActiveDataProvider類。這裏是我的DataProvider的代碼:數據提供者和關係(Yii)

$dataProvider=new CActiveDataProvider('Category', array(
      'criteria'=>array(
       'with'=>array('products'), 
       'condition'=>'t.id=1', 
      ), 
)); 

然後我已經將這個數據提供者傳遞給一個小部件,但無法訪問它的值。 如果有人可以,請指導我完成整個過程。謝謝。

+0

你在做什麼?結果是什麼? – adamors

+0

我想完成與[示例]中的[this](http://stackoverflow.com/questions/11330040/extract-data-from-relations)示例中的結果相同的結果,但要通過List小部件完成。 –

回答

3

魔術得到它的幫助下工作Yii社區(謝謝:))
下面是控制器的代碼:

$dataProvider=new CActiveDataProvider('Product', array(
    'criteria'=>array(
      'with'=>array('category'), 
       'condition'=>'category.id=:id', 
       'params'=>array(':id'=>$id), 
    ), 
)); 
+0

我設置了分頁。但是當我點擊下一個時,它顯示沒有找到記錄。但我有記錄。 PLZ幫助我.... – Kailas

0

那麼這取決於你的Widget需要什麼。 CActiveDataProviderCActiveRecord的包裝,具有擴展功能排序,分頁和過濾。通常,CActiveDataProvider正與zii小部件(如CListViewCGridView)一起使用,它們正在利用其排序和搜索功能。

所以如果你想用列表或表格(可選)排序/篩選/分頁顯示數據 - 在Yii中最簡單的方法是使用描述的zii小部件或其擴展。

如果你只是需要獲取數據,並以任何其他方式使用它,但沒有通過CListViewCGridView提供智能渲染機制 - 使用CActiveRecord,因爲它不只是數據獲取的上執行任何東西。

我發現,這是更好地使用CActiveDataProvider類等 情況

你同樣可以使用CActiveRecord做關係

+0

是的,我需要分頁和過濾。你能指導我完成整個過程嗎? –

+0

你的小部件需要什麼輸入類型 –

+0

它必須簡單地從數據庫中檢索信息。無需輸入。 對不起,如果不清楚。 –