Laravel多租户问题:Nova仪表盘从租户域访问时数据源选择异常求助
Laravel多租户Nova跨数据库读取解决方案
给模型绑定对应数据库连接
直接在模型类里指定连接属性:- 租户专属模型(比如
TenantUser、TenantOrder)添加:protected $connection = 'tenant'; - 中央共享模型(比如
Product、SystemSetting)添加:protected $connection = 'central';
Nova资源会自动继承对应模型的连接配置,确保资源类关联的是正确的模型即可。
- 租户专属模型(比如
重写Nova资源的查询逻辑(按需)
如果某些Nova资源需要强制使用中央连接(即使当前处于租户上下文),可以在资源类里重写query方法:public static function query(Request $request) { // 强制该资源使用中央数据库连接 return parent::query($request)->setConnection('central'); }调整Nova仪表盘组件的数据源
仪表盘的统计卡片、指标等组件,如果需要读取中央库数据,直接在逻辑里指定连接:public function calculate(Request $request) { // 明确使用中央连接查询统计数据 $total = \App\Models\SystemLog::on('central')->count(); return $this->count($total); }确认数据库连接配置正确性
检查config/database.php,确保已配置tenant和central两个连接实例,分别指向租户数据库和中央数据库;同时确保你的租户识别中间件(比如基于域名解析)能正确切换tenant连接的数据库参数。
内容的提问来源于stack exchange,提问作者edinkahvedzic
相关产品推荐
相关产品推荐

