在 web.php 中,我在中间件中切换了Postgres模式,因为它产生了子域类型的HTTP请求。这样:
Route::group(
[
'domain' => '{tenant}.' . config('app.url'),
'middleware' => 'select-schema'
],
function () {
$this->get('/', 'HomeController@index')->middleware('auth');
}
);
在 select-schema 中间件中,我做了类似的事情。这工作正常。 (别担心)
DB::select('SET search_path TO ' . {tenant});
我的主要问题是:migrations
架构与public
架构的individual tenant
不同。在individual tenant
我有users
表。一旦我登录它就会弹出这个错误。
SQLSTATE [42P01]:未定义的表:7错误:关系“用户”不存在
主要问题是
$this->get('/', 'HomeController@index')->middleware('auth');
该模型效果很好,但中间件auth
先于select-schema
如何订购? select-schema
然后auth
答案 0 :(得分:4)
我找到了解决方案,
为此,$middlewarePriority
中有一个名为App\Kernel
的内容。
添加此项可帮助我解决问题。
/**
* Responsible for prioritizing the middleware
*
* @var array
*/
protected $middlewarePriority = [
\App\Http\Middleware\SwitchSchema::class,
];
我已从此链接获得解决方案。
答案 1 :(得分:0)
您是否尝试将您的路线包装在租户组中?看看是否有效:
Route::group([
'domain' => '{tenant}.' . config('app.url'),
'middleware' => 'select-schema'
],function () {
Route::group(['middleware' => 'auth'], function () {
Route::get('/', 'HomeController@index');
});
}
);