Cakephp:在userScope中使用OR条件

时间:2013-07-02 23:16:35

标签: cakephp authentication login

我正在尝试在Cake 1.3.10中创建一个登录功能,该功能会检查除用户名和密码之外的额外条件。我正在使用$ this-> Auth-> userScope。

如果我检查一个条件就可以了。我在beforeFilter()中有这个:

 $this->Auth->userScope = array('User.status' => 1);

但是,如果我使用 OR (就像在发现中一样)它不起作用:

$this->Auth->userScope = array('OR'=> array('User.status' => 1, 'User.status' => 2));

这样做会忽略 OR 的第一个条件,只考虑第二个条件。

有没有办法用userScope实现这个目的?

1 个答案:

答案 0 :(得分:3)

基本PHP。 它不会忽略它,但由于数组的性质会覆盖第一个和第二个。 您可能永远不会在数组中多次使用相同的键。

所以它是:

$this->Auth->userScope = array(
    'OR' => array(array('User.status' => 1), array('User.status' => 2)))

或者在你的情况下,因为我们正在谈论它的CakePHP,更清洁的解决方案(合并它们):

$this->Auth->userScope = array('User.status' => array(1, 2));

将在简单的“IN(1,2)”声明中进行转换。