2011-08-07 59 views
0

我想顯示一個朋友名字列表,即:first_name和last_name。CakePHP查詢構建問題

我有一個友誼表,它看起來是這樣的:

id , friend_a , friend_b , created , modified 
1 , 1 , 3 , created , modified 
1 , 1 , 7 , created , modified 
1 , 4 , 1 , created , modified 
1 , 2 , 6 , created , modified 

其中friend_a和friend_b是朋友。

然後,我有一個friendships_controller,與此:

function get_my_friends(){ 
    $this->set('user', $this->passedArgs['user'] ); 

    $conditions = array(
     'OR' => array(
     array("Friendship.friend_a" => $this->passedArgs['user']), 
     array("Friendship.friend_b" => $this->passedArgs['user']) 
     ) 
    ); 

    $this->set('friends', $this->Friendship->find('all',array('conditions'=>$conditions)) ); 
} 

並在視圖,我有這樣的:

<?php foreach($friends as $friend): ?> ... 

併爲每個$的朋友,我想呼應的名字朋友,這需要從用戶表中檢索。

問題:

我怎麼也融入上述控制器查詢:

SELECT first_name, last_name FROM users AS friend_name WHERE users.id = x 

其中x代表條款((如果$用戶== Friendship.friend_a,然後選擇friend_b)其他( (SELECT friend_a))「)

讚賞任何幫助...

回答

1

設定友誼屬於關聯用戶(或無論您使用的模式;記得設置他們的2,1 frie nd_a,1代表friend_b);將app_model設置爲actAs可包含;並在代碼:

$this->set('friends', $this->Friendship->find('all',array(
    'conditions'=>$conditions)), 
    'contain'=>array(
     'name_of_the_relationship_you_set_for_friend_a'=>array('fields'=>array('first_name', 'last_name')), 
     'name_of_the_relationship_you_set_for_friend_b'=>array('fields'=>array('first_name', 'last_name')) 
    ) 
); 

如果有任何的上面是新的給你,看看它的食譜。