2011-08-07 21 views
0

私は友人の名前、すなわちfirst_nameとlast_nameのリストを表示しようとしています。CakePHP質問作成の質問

私はこのようになりますこれは、友情のテーブルを持っている:friend_aとfriend_bが友達である

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 

それから私はこれで、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): ?> ... 

をそして各$の友人のために、私はそれの名前をエコーし​​たいです友人は、ユーザーのテーブルから取得する必要があります。

QUESTION:(

SELECT first_name, last_name FROM users AS friend_name WHERE users.id = x 
xは句を表し

(($ユーザー== Friendship.friend_a、その後、friend_bを選択した場合)他:私はまた、上記コントローラのクエリに統合するにはどうすればよい

(SELECT friend_a))」)

感謝すべてのヘルプ...

答えて

1

設定友情belongsToのユーザー(またはあなたが使用どんなモデル、フレンドVoのためにそれらの2、1を設定することを忘れないでくださいnd_a、friend_bに1); app_modelをactAs Containableに設定します。そしてコードで:

$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')) 
    ) 
); 

上記のいずれかが料理でそれを見て、あなたに新しいものである場合。