Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-设置与Auth::user()的模型连接_Php_Database_Laravel_Model - Fatal编程技术网

Php Laravel-设置与Auth::user()的模型连接

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)-&

在我的项目中,每个用户都有自己的数据库,我在config/database.php上定义了连接。所以,在模型中需要设置数据库连接

// 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,应用程序广告了受身份验证中间件保护的每条路由,因此,这不应该是一个问题;)谢谢你的登录路线如何?