我有一个现有的Yii2基本系统,它运行在Oracle数据库上,并通过Yii2Admin内置了RBAC。它很棒。
我现在需要另外使用另一个数据库(MS-SQL Server 2008)。
所以我设置了一个新的模块,它使用了第二个Yii :: $ app-> db2链接,所有这些工作正常。
我的问题是,对于我的第二个MS-SQL Server 2008数据库的用户,是否可以在此模块中具有链接到MS-SQL Server 2008数据库而不是现有Oracle数据库的登录+ RBAC。
或者我必须使用Oracle吗?
答案 0 :(得分:0)
是的,我认为你可以覆盖并为你的MSSQL服务器创建一个单独的RBAC管理器
在RBAC DB Manager中,您可以看到属性db
:
return [
// ...
'components' => [
'authManager2' => [ // <!-- Auth Manager 2
'class' => 'yii\rbac\DbManager',
'db' => 'db2' // <-- Here is the magic change db instance
],
// ...
],
然后您可以使用Yii::$app->authManager2
对象
希望这会对你有所帮助。
答案 1 :(得分:-1)
尝试使用folow配置。 Fist将MS-SQL Server 2008连接设置为db1名称 示例:
'db1' => [
'class' => '\yii\db\Connection',
'dsn' => 'Your MS-SQL Server 2008 DNS',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
并在ActiveRecord模型中覆盖db1值的函数getDB()。这将从MS-SQL Server 2008查询数据。
文件:http://www.yiiframework.com/doc-2.0/yii-db-activerecord.html#getDb()-detail
注意:您必须通过扩展类或其他东西来定制Yii2Admin。