2016-02-25 31 views
4

我使用yii框架和使用CArrayDataProvider,因爲我的數據提供程序包含3個表。但如果我在此使用SortArray_multisort失敗,如果日期相等

$sort = new CSort; 
     $sort->defaultOrder = 'created DESC'; 
     $dataProvidermain=new CArrayDataProvider($data, array(
      'id'=>'user', 
      'sort' => $sort, 
      'pagination'=>array(
       'pageSize'=>20, 
      ), 
     )); 

它引發錯誤

Fatal error: Nesting level too deep - recursive dependency? in /var/www/goalsurf/framework/web/CArrayDataProvider.php on line 151

調試後,我才知道,當2種或多個元素的日期是相等的,它是引發此錯誤。我有三個具有相同日期的實體。 2016-02-06 10:10:51。如果我更改2條記錄的日期,那麼它正在工作。試圖從過去兩天解決這個問題。搜索谷歌,但沒有解決方案。

請幫助我。

更新 這是陣列形式

[68] => Tasks Object 
     (
      [taskmodel] => 1 
      [quickacent] => 15 
      [dailygoal] => 
      [weeklygoal] => 
      [dailygoal2] => 
      [_new:CActiveRecord:private] => 
      [_attributes:CActiveRecord:private] => Array 
       (
        [id] => 563 
        [guid] => 650c7572-3fae-4f9a-a476-8de6a21c329e 
        [user_id] => 44 
        [deli_id] => 0 
        [branch_id] => 0 
        [main_goal_id] => 0 
        [title] => Buy Babycon Dress 
        [thumb_ext] => 
        [description] => 
        [ecv] => 
        [isSpam] => 0 
        [displayorder] => 0 
        [created] => 2016-02-06 10:10:52 
        [modified] => 2016-02-06 10:10:52 
       ) 
     ) 
) 

更新2

$data變量是

$dataProvider=new CActiveDataProvider('Goals', array('criteria' => $criteria,'pagination'=>false)); 

    $dataProvider2=new CActiveDataProvider('Tasks', array('criteria' => $criteria2,'pagination'=>false)); 

    $dataProvider3=new CActiveDataProvider('TasksDaily', array('criteria' => $criteria2,'pagination'=>false)); 
    //echo "<pre>"; print_r($dataProvider2->getData()); die; 
    $data=array_merge($dataProvider->getData(),$dataProvider2->getData(),$dataProvider3->getData()); 
+0

'$ sort'調用'$ sort',這使得'$ sort'遞歸,所以這就是它拋出這個錯誤的原因。也許找出'$ sort'的其他名字? –

+0

我將變量名稱從'$ sort'更改爲'$ sortvariable',但沒有更改 – MKD

+0

您可以發佈有問題的數組格式的數據 –

回答

0

嘗試是:$sort->defaultOrder = 'created DESC, id ASC';