基于用户角色的口才交换数据库

时间:2018-01-19 14:08:21

标签: laravel laravel-5 lumen laravel-eloquent

你好在我的流明应用程序中我创建了几个用户,我想用它来在我的服务器上执行测试事务,目前测试数据库事务与实际记录混合在一起,这在删除时真的很痛苦。

我想要做的是检查用户执行操作时如果他们是测试用户,应该切换到我的test_db并将数据保存在那里。我想知道如何做到这一点,有没有办法在模型中执行此操作,以便根据登录用户的角色选择要保存的数据库?

2 个答案:

答案 0 :(得分:1)

我会为此创建一个中间件,并根据角色有条件地设置数据库配置。

If (auth()->user->role === 'test') {
    config(['database.connection.default' => [...test connection config]]);
}

在请求生命周期的早期执行此操作。

答案 1 :(得分:1)

在您的模型中,您可以定义用于该模型的数据库;

fout = data['tweetText'].str.extractall('#')

或者,如果您在控制器上运行期间使用多个连接,则在您的模型上设置一个更改连接的功能

 protected $connection = 'connection1';

在控制器中你可以这样做:

public function changeConnection($conn)
{
   $this->connection = $conn;
}

另一种解决方案是使用中间件