-1

私は見つけるべき次のクエリを持っています:

  • user_idがuserIdと一致し、friend_idがfriendIdと一致する行
  • または、user_idがfriendIdと一致し、friend_idがuserIdと一致する行
  • AND両方のステータスも1です

私のコードは次のとおりです。

public function isFriend($userId, $friendId)
{
    return $search = $this->Friend->find('first', array(
            'conditions'=>array(
                'OR' => array(
                    'AND'=>array(
                        'Friend.user_id'=>$userId,
                        'Friend.friend_id'=>$friendId
                    ),
                    'AND'=>array(
                        'Friend.user_id'=>$friendId,
                        'Friend.friend_id'=>$userId
                    )
                ),
                'AND' => array(
                    'Friend.status'=>1
                )
            )
        )
    );
}

しかし、それは機能していません...私は周りを見回して、2つのAND呼び出しを処理するときに配列を正しく取得することに関係しているようですが、私はそれを取得しません。誰かが私を助けることができますか?

ありがとう

4

1 に答える 1

2

マークが言ったように同じ配列キーを2回使用することはできないため、ANDを別々の配列にカプセル化する必要があります

'OR' => 
array(
    array('AND'=>array(
            'Friend.user_id'=>$userId,
            'Friend.friend_id'=>$friendId
        )
    ),
    array('AND'=>array(
            'Friend.user_id'=>$friendId,
            'Friend.friend_id'=>$userId
        )
    )
),
'AND' => array(
    'Friend.status'=>1
)
于 2012-12-16T16:29:23.760 に答える