使用AND OR进行CakePHP查询

时间:2012-12-16 16:07:54

标签: php cakephp

我有以下查询应该找到:

  • 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
                )
            )
        )
    );
}

然而它不起作用......我环顾四周似乎是在处理两个AND调用时正确地获取数组,但是我没有得到它。任何人都可以帮助我吗?

由于

1 个答案:

答案 0 :(得分: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
)