Php Laravel-设置与Auth::user()的模型连接
在我的项目中,每个用户都有自己的数据库,我在config/database.php上定义了连接。所以,在模型中需要设置数据库连接Php Laravel-设置与Auth::user()的模型连接,php,database,laravel,model,Php,Database,Laravel,Model,在我的项目中,每个用户都有自己的数据库,我在config/database.php上定义了连接。所以,在模型中需要设置数据库连接 // defines default database connection protected $connection = Auth::user()->database; 我不能使用它,因为它将抛出一个错误:常量表达式包含无效操作 有人能帮我吗 要存储和显示数据,我使用: DB::connection(Auth::user()->database)-&
// defines default database connection
protected $connection = Auth::user()->database;
我不能使用它,因为它将抛出一个错误:常量表达式包含无效操作
有人能帮我吗
要存储和显示数据,我使用:
DB::connection(Auth::user()->database)->table(...
而且很有魅力。有人能帮我用$connection来设置变量吗
通过中间件解决了这个问题
public function handle($request, Closure $next, $database)
{
// check witch database connection to use
switch ($database) {
case 'self':
// Set the User Database Connection
DB::setDefaultConnection(Auth::user()->database);
// Reconnect
DB::reconnect();
break;
case 'main_db':
// Set the User Database Connection
DB::setDefaultConnection('main_db');
// Reconnect
DB::reconnect();
break;
default:
// default action
abort(403, 'Não está autorizado a aceder ao recurso solicitado.');
break;
}
// next request...
return $next($request);
}
在每个控制器中:
public function __construct()
{
// calls the middleware: SetDatabaseConnection
$this->middleware('SetDatabaseConnection:self');
}
谢谢你的提示。你能在你的构造函数中设置
$this->connection=Auth::user()->database
吗?当心,当查询时没有用户登录时,你可能会遇到麻烦。@JeremyHarris,在控制器内部,如果我用Auth:::定义u construct(),会给出错误--试图获取非对象的属性“database”。@Jerodev,应用程序广告了受身份验证中间件保护的每条路由,因此,这不应该是一个问题;)谢谢你的登录路线如何?