我正在尝试显示朋友名称列表,即:first_name和last_name。
我有一个友谊表,看起来像这样:
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代表子句((如果$ user == Friendship.friend_a,则SELECT friend_b)else((SELECT friend_a))“)
任何帮助表示赞赏...
答案 0 :(得分:1)
设置友谊属于用户(或者你使用的任何模型;记得设置2个,1个用于friend_a,1个用于friend_b);将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')) ) );
如果以上任何一项对您来说都是新手,请在食谱中查阅。