2012-09-05 87 views
1

我在CakePHP的模型問題,CakePHP的模型的hasMany

我想在變量$的hasMany關鍵字

我想補充的條件像現在的user_id添加動態條件下,我得到了用戶ID登錄信息後。

var $hasMany = array(
    "AskComment"=>array('limit'=>3), 
    'AskStatistic', 
    'AskContactsLink', 
    'AskStatistic', 
    'AskObject', 
    'AskLikes' 
); 

回答

2

如果要在模型中添加動態條件,那麼您可能必須將模型關聯動態綁定到控制器的代碼中。將以下代碼寫入控制器的方法中,您希望爲現有的/新的關聯模型強加一些新的條件。

$this->PrimaryModel->bindModel(array('hasMany' => array(
    'AskComment' => array(
     'className' => 'AskComment', 
      'foreignKey' => 'primary_id', 
       'conditions' => array('AskComment.user_id' => $user_id) 
     ) 
    ) 
)); 

看看這個鏈接:Creating and destroying associations on the fly。這一定會幫助你達到同樣的目標。

+0

'bindModel(...)'只適用於下一個查找操作。使用'bindModel(...,false)'創建一個持久關聯(對於請求中的所有後續查找) – ori

+0

如果我們想根據控制器級別的某些條件創建持久化模型關聯,那麼我們可以定義上述相關控制器的'beforeFilter()方法中的關聯。你是對的@ori。謝謝。 :) –

0

我認爲最好把你的關聯放在構造函數模型中。 like this:

/** 
* @see Model::__construct 
*/ 
public function __construct($id = false, $table = null, $ds = null) { 
    public $hasMany = array(
     'AskComment' => array(
      'className' => 'AskComment', 
      'foreignKey' => 'primary_id', 
      'conditions' => array(
       'AskComment.user_id' => $user_id, 
      ), 
     ), 
    ); 
}