我的客户端有一个大型 SQL Server 数据库,可存储20家公司的各种形式的数据。并且这些公司中的每一个都可以使用他们的数据库登录cridentials访问数据库的各个部分。
为了清楚起见,我没有用户表。但相反,每一个 用户实际上是数据库用户。
现在,我正在使用自己的自定义MVC ,并且它运行良好。像这样:
$user = $_POST['login']
$pass = Hash::create('sha256', $_POST['password'], HASH_PASSWORD_KEY);
try {
$conn = new PDO(DB_TYPE . ':server=' . DB_HOST . ',1433 ;Database=' . DB_NAME, $user, $pass);
$baglantiDurumu = "baglandi";
}
随着这个项目越来越大,我认为现在是时候切换到 Laravel ,这样我就能从中受益于它的功能。但我不知道如何在Laravel中实现这一目标。
我需要在连接字符串(database.php)中使用此用户/密码,例如:
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'xxx.xxx.xxx.xxx'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'TestDb-3'),
'username' => env('DB_USERNAME', $user),
'password' => env('DB_PASSWORD', $pass),
'charset' => 'utf8',
'prefix' => '',
],
我认为,仅凭这一点还不足以解决我的问题,因为为了使用Laravel的其他功能,例如"Auth"
,"Session"
以及与用户登录相关的所有其他类,我需要一个用户数据库。不幸的是,我没有。
顺便说一句,忘记提及包括我在内的所有用户都只阅读了特权。没有 INSERT ,没有更新,只有 SELECT 。
您有什么建议,还是应该回到我原来的MVC?
答案 0 :(得分:0)
试试这个:
<强>配置/ database.php中强>
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'xxx.xxx.xxx.xxx'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'TestDb-3'),
'username' => '',
'password' => '',
'charset' => 'utf8',
'prefix' => '',
],
<强> AnyController.php 强>
public function anyThing(Request $request)
{
config('database.sqlsrv.username', $request->input('db_username'));
config('database.sqlsrv.password', bcrypt($request->input('db_password'));
// Query Builder
$data = DB::connection('sqlsrv')->table('table_name')->get();
// Or Eloquent
$data = TableModel::connection('sqlsrv')->get();
return view('path.to.view')->with(compact('data'));
}