2014-11-02 47 views
0

我在我的模型中有以下自定義查找,我希望根據傳遞給它的值重新使用它。將值傳遞給自定義查找模型

public function _findActive($state, $query, $result = array()) { 
     if ($state === 'before') { 
      $query['conditions'] = array('WebRequest.status' => false, 'WebRequest.read_status' => false); 
      $query['contain'] = false; 
      $query['limit'] = 25; 
      $query['order'] = array('WebRequest.created' => 'asc'); 
      return $query; 
     } 
     return $result; 
    } 

我可以從我的控制器調用此函數,它會將結果分頁爲每頁25個。但是,我希望能夠將限制值傳遞給功能,並根據需要按每頁這一卷進行限制。我可以將一個額外的字段$limit添加到傳遞給函數的函數參數($state, $query, $result = array(), $limit)中。如果我在if($state === 'before')函數的開始處進行調試,那麼該值將保持爲傳入的值,但由於此函數會自動調用兩次,所以在第二次調用此函數時默認情況下它會重置爲null,因此我將失去傳入的值。有沒有解決方法?

回答

0

試試這個:

public function _findActive($state, $query, $result = array()) { 
    if ($state === 'before') { 
     $query['conditions'] = array(
      'WebRequest.status' => false, 
      'WebRequest.read_status' => false 
     ); 
     $query['contain'] = false; 
     $query['limit'] = 25; 
     $query['order'] = array('WebRequest.created' => 'asc'); 
     return $query; 
    } elseif ($state == 'after') { 
     return $results; 
    } 
}` 
+0

這不起作用。該值仍然被忽略爲空 – 2014-11-02 10:23:36

0

您可以將原來的$limit值存儲在模型中的私有類變量,並使用它的極限。喜歡的東西:

class YourModel extends AppModel { 

    private $_originalLimit; 

    public function _findActive($state, $query, $result = array, $limit) { 
     .... 
     if (!empty($limit)) 
     $this->_originalLimit = $limit; 

     $query['limit'] = $this->_originalLimit; 
     .... 
    } 

} 

當此功能被稱爲第二次用空$limit,類變量,其中有原來的$限值,將被用於限制。

相關問題