通过执行单个查询db来检查YII中的多访问

时间:2014-02-11 19:48:35

标签: php yii

我正在使用Yii框架,而CDbAuthManager类则用于授权用户。 对于检查,一个访问可以使用此代码:

Yii::app()->user->checkAccess('post');

此代码执行db查询,它位于后台:

SELECT * FROM `auth_item` WHERE name='post'

现在如果我检查其他访问权限,则执行另一个数据库查询:

Yii::app()->user->checkAccess('comment');
SELECT * FROM `auth_item` WHERE name='comment'

现在,如果我需要检查许多访问权限,那么执行许多数据库查询。 现在,我如何检查多路访问,以便只执行单个查询db。 例如,我希望代码是这样的:

Yii::app()->user->checkAccess(array('post', 'comment'));

也许执行就像这个查询:

SELECT * FROM `auth_item` WHERE name IN ('post', 'comment');

有什么想法吗?!

2 个答案:

答案 0 :(得分:0)

我认为以下代码可能适合您

Yii::app()->user->checkAccess('name', array('post', 'comment'))

答案 1 :(得分:0)

我找到了一个解决方案,并在此处为其编写了一个组件:http://www.yiiframework.com/extension/auth-component/