带AND或OR的CakePHP查询

带AND或OR的CakePHP查询,php,cakephp,Php,Cakephp,我有以下应该查找的查询: 用户id与用户id匹配且朋友id与朋友id匹配的行 或者用户id与friendId匹配且friendId与userId匹配的行 两者的状态都是1 我的代码是: public function isFriend($userId, $friendId) { return $search = $this->Friend->find('first', array( 'conditions'=>array(

我有以下应该查找的查询:

用户id与用户id匹配且朋友id与朋友id匹配的行 或者用户id与friendId匹配且friendId与userId匹配的行 两者的状态都是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
                )
            )
        )
    );
}
但是它不起作用。。。我环顾四周,似乎这与在处理两个和调用时正确获取数组有关,但我不明白。有人能帮我吗


谢谢

您不能像mark所说的那样两次使用同一数组键,因此您必须将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
)

你应该知道不能在同一个数组中使用数组键两次。我不知道。这就是问题所在。我在这里寻找帮助,这就是我如何把我的代码放在一起的。在那一页上,这正是我的解决方案,你使用了Jason标题为eg.的代码,而不是。您必须使用下面的代码块,谢谢。太多的数组让我很困惑;