[Stancl\Tenancy] 找个会使用Stancl\Tenancy 3的大佬咨询几个入门的问题,请喝咖啡,小弟真的抑郁了

第一次尝试使用这个插件,有几个想实现的功能,但不知道怎么下手,有懂这个插件的朋友帮我解下惑,万分感谢。

这是我目前遇到的问题:

  1. 用户放在中央数据库中,通过建立用户和租户的关系的方式共享用户。此时使用passport鉴权,应该怎么配置。
  2. 基于第一点,使用laravel-permission做用户鉴权,应该怎么配置。
  3. 租户有层级关系,比如A租户可以创建一个B租户把自己的资源分配一部分给对方。这个问题的本质应该是程序中如何切换上下文到租户或者中央程序。

可能因为第一次使用,方向完全就是错的,如果真是这样,帮我指出来也万分感谢。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

求关注,求温暖。

1年前 评论

最近正好项目在用这个包,你的需求只需掌握如何切换数据库上下文即可解决。

以下代码即可实现租户切换与回退至中央应用:

use Stancl\Tenancy\Database\DatabaseManager;

if (!function_exists('set_database_connection_by_tenancy_id')) {
    function set_database_connection_by_tenancy_id ($id) {
        $manager = app(DatabaseManager::class);
        $manager->connectToTenant(\App\Models\Tenant::findOrFail($id));
    }
}

if (!function_exists('set_database_connection_to_central')) {
    function set_database_connection_to_central () {
        app(DatabaseManager::class)->reconnectToCentral();
    }
}

这些都是在文档中没有体现的内容,所以有些时候你需要自己去翻阅源码以满足你的需求。

1年前 评论
liuwq (楼主) 1年前

@lidongyoo 非常感谢,事实上我刚也在阅读这一块儿的源码,看到数据库切换相关的代码茅塞顿开,嘿嘿。 另外一个就是用户都用中央数据库的user,这个问题我通过覆盖默认的数据库连接参数实现的,不知道有没有更好的方案。把user表搬到tenant下这种方式个人觉得有点蠢,包提供的数据同步功能还没理解,就没用,理论上那个功能也能实现我要的效果

file

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!