国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

如何為數(shù)據(jù)庫模型動(dòng)態(tài)設(shè)置連接(thinkorm)

doit

問題描述

業(yè)務(wù)場景為一個(gè)主庫,多個(gè)業(yè)務(wù)庫,類似多租戶場景,主庫數(shù)據(jù)共享,之前使用tp框架時(shí),使用的方案是針對每個(gè)請求生命周期,根據(jù)參數(shù)在中間件中動(dòng)態(tài)設(shè)置默認(rèn)數(shù)據(jù)庫連接。主庫模型指定連接,業(yè)務(wù)庫模型不指定連接,會(huì)使用默認(rèn)連接。請問在webman中該如何設(shè)計(jì),避免模型需要指定數(shù)據(jù)庫連接及無法使用模型中的事件?

為此你搜索到了哪些方案及不適用的原因

已搜索,無可用方案。

2290 5 3
5個(gè)回答

楚羽幽

1、可以新建一個(gè)基類模型,在頂級基類模型里面使用connection屬性進(jìn)行鏈接
2、可以直接Db::connection("plugin.配置文件")鏈接

  • doit 2022-10-19

    可能我沒表述清除,需求是多個(gè)業(yè)務(wù)庫字段一致公用模型,有沒有什么方法避免使用Model::connection方法,直接使用模型

  • 不敗少龍 2022-10-19

    在模型里面指定鏈接的數(shù)據(jù)庫

  • hongshao 2022-10-19

    class User extends Model
    {
    protected $connection = 'website';

  • doit 2022-10-19

    多數(shù)據(jù)庫共用模型,不能在模型里指定,需要根據(jù)業(yè)務(wù)動(dòng)態(tài)切換連接

  • 不敗少龍 2022-10-19

    難道是不同的模塊調(diào)用模型對應(yīng)的不同數(shù)據(jù)庫?

  • nitron 2022-10-19

    Service層指定connection,再怎么動(dòng)態(tài)最終都要指定連接

xiuwang
class User extends Model
{
    protected $connection;

    public function construct($connection)
    {
        $this->$connection = $connection;
        parent::construct();
    }
}

用的時(shí)候指定連接

$model = new User('website');

更進(jìn)一步,你可以在中間件里給$request設(shè)置一個(gè)臨時(shí)屬性存儲(chǔ)當(dāng)前connection連接名,例如

$request->connectionName = 'website';

實(shí)例化的時(shí)候

$model = new User($request->connectionName);

再進(jìn)一步,modle可以這樣寫

class User extends Model
{
    protected $connection;

    public function construct()
    {
        $this->$connection = request()->connectionName;
        parent::construct();
    }
}
  • doit 2022-10-19

    實(shí)測,模型始終使用的是默認(rèn)數(shù)據(jù)庫連接,construct重置連接不起作用,使用模型User::connect('db')也不起作用

  • doit 2022-10-19

    已解決,十分感謝

  • 晚安。 2022-10-19

    怎么解決的

  • doit 2022-10-20

    使用了db門面測試發(fā)現(xiàn),是配置的問題。。

2548a

ImBase實(shí)際連接的是im配置的數(shù)據(jù)庫,為了測試我故意改成info配置的,你既然說重置沒用,那我下面代碼絕對會(huì)報(bào)數(shù)據(jù)表不存在的,然而剛我測試了,改了后他們一樣正常運(yùn)行。這說明重置$connection沒有問題。
截圖

  • doit 2022-10-19

    Model繼承的是think\Model嗎?

2548a

我直接貼圖給你看
截圖

  • 暫無評論
2548a

重置連接肯定沒問題的,可能是你傳參導(dǎo)致的,基類默認(rèn)是傳了個(gè) $data 參數(shù)的,你使用Request->xxx 或者寫一個(gè)靜態(tài)類來傳連接配置,不要像前面那樣傳參數(shù)看看。

年代過于久遠(yuǎn),無法發(fā)表回答
??