2015-02-05 32 views
0

CakePHP的模型關聯我在CakePHP的以下模型:與用戶ID

class Post extends AppModel { 

var $name = 'Post'; 

var $belongsTo = array(    
     "User" => array(
       'className' => 'User', 
       'foreignKey' => 'user', 
       'fields'=>array('id', 'username', 'last_action', 'type', 'status', 'country') 
       ), 
); 
var $hasOne = array(    
      "Follower" => array(
        'className' => 'Follower', 
        'foreignKey' => false, 
        'fields'=>'target', 
        'conditions' => array('Follower.target = Post.user', 'Follower.user = 21') 
      ), 
); 
} 

這個模型從數據庫獲取的職位,包括基本的用戶信息。我的目標是在相同的查詢中包含檢索數據的用戶是否關注創建該帖子的人。

由於這個原因,我試圖關聯表追隨者。但爲了得到合適的結果,我應該提交用戶標識(在本例中爲21)。問題是我不知道如何傳遞記錄的用戶ID變量。

有人知道該怎麼做或者應該如何寫這個模型? 謝謝

+0

描述Follower模型的結構以及它的任何字段如何與另一個模型相關聯。我的猜測是這種關係不是Post模型的一部分,而是User模型的一部分。 – AgRizzo 2015-02-05 20:46:12

+0

爲什麼在條件中硬編碼用戶ID?這會扭曲所有查詢的結果。條件應該是您爲結果構建的查詢的一部分, – 2015-02-05 21:05:52

+0

追隨者表只有2個字段,用戶(追隨者)和目標(追隨者)。如果我在用戶中進行關係,我會遇到與用戶標識相同的問題。 – Nyoc 2015-02-05 21:28:09

回答

0

刪除Post模型中的$ hasOne代碼。立即執行你的find之前,用bindModel

例如,這會從(已登錄用戶的ID改變21到你)Post模型中的一個方法調用之前find

$this->bindModel(
     array('hasOne'=>array(
        'Follower' => array(
        'className' => 'Follower', 
        'foreignKey' => false, 
        'fields'=>'target', 
        'conditions' => array(
         'Follower.target' => 'Post.user', 
         'Follower.user' => '21') 
        ) 
     )) 
     );