-1

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

  • user_id 与 userId 匹配且friend_id 与friendId 匹配的行
  • 或 user_id 与friendId 匹配且friend_id 与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
                )
            )
        )
    );
}

但是它不起作用......我环顾四周,似乎与在处理两个 AND 调用时正确获取数组有关,但我不明白。谁能帮我吗?

谢谢

4

1 回答 1

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 回答