0

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

如果我只检查一个条件,它就可以正常工作。我的 beforeFilter() 中有这个:

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

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

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

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

有什么方法可以通过 userScope 实现这一点?

4

1 回答 1

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)”语句。

于 2013-07-02T23:45:27.917 回答