国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

thinkphp5框架的model支持多地區(qū)數(shù)據(jù)庫切換

這篇具有很好參考價值的文章主要介紹了thinkphp5框架的model支持多地區(qū)數(shù)據(jù)庫切換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、說明

一般情況下,都是在model中指定一個數(shù)據(jù)庫連接參數(shù)即可。但某些情況下,相同的庫表會在不同地區(qū)都有部署,這個時候需要按地區(qū)進行切換(只有一個model情況下)。

2、多model繼承方式

Model層代碼
//A地區(qū)的數(shù)據(jù)庫
class A extends Model
{
    protected $connection = 'xxx';
    protected $table = 'xxx';

    //其他操作方法
}

//B地區(qū)的數(shù)據(jù)庫
class B extend A
{
    protected $connection = 'xxx';
    protected $table = 'xxx';
}

使用A地區(qū)的數(shù)據(jù)庫:$model = new A();
使用B地區(qū)的數(shù)據(jù)庫:$model = new B();

3、單model重寫構(gòu)造方法

需要更改地方:config.php配置、重寫Model的構(gòu)造方法

  1. config.php
點擊查看代碼
return [
    "hk" => [
        "xxx" => [xxx],//具體的數(shù)據(jù)庫連接參數(shù)
    ],
    "sg" => [
        "xxx" => [xxx],//具體的數(shù)據(jù)庫連接參數(shù)
    ],
];
  1. 新建一個BaseModel重寫Model的構(gòu)造方法
點擊查看代碼
//自定義Model基類
class BaseModel extends Model
{
    /**
     * 多地區(qū)數(shù)據(jù)庫配置
     * 其中的值必須在config中配置的數(shù)據(jù)庫配置:Config::get('hk.xxx')
     * 例如:[
     *      'hk' => 'hk.xxx',
     *      'sg' => 'sg.xxx'
     * ]
     * @var array
     */
    protected $multi_connections = [];
    protected $multi_connections_key;

    //重寫構(gòu)造方法
    public function __construct($data = [])
    {
        //通過new model('xx.xx')設(shè)置 connection => 多地區(qū)數(shù)據(jù)庫
        if (is_string($data)) {
            $this->multi_connections_key = $data;//記錄當前的地區(qū)key
            if ($conn = $this->multi_connections[$data]) {
                //此時:data=hk
                $this->connection = $conn;
            } else {
                //此時:data=hk.xx,且必須設(shè)置配置文件
                $this->connection = $data;
            }
            $data = [];
        }

        parent::__construct($data);
    }
}
  1. 在model中使用
點擊查看代碼
class A extends BaseModel
{
    //多地區(qū)數(shù)據(jù)庫配置(下面支持sg和kr地區(qū)的切換)
    protected $multi_connections = [
        'sg' => 'sg.xxx',
        'kr' => 'kr.xxx',
    ];

}
  1. 在控制器中進行使用

url設(shè)置:http://xxx?region=xxx文章來源地址http://www.zghlxwxcb.cn/news/detail-651021.html

點擊查看代碼
class Demo extends Controller
{
    public $region;
    protected $mod;

    public function _initialize()
    {
        //獲取當前需要的地區(qū),默認hk
        $this->region = input('region', 'hk');
        //根據(jù)地區(qū)進行new Model
        $this->mod = new A($this->region);
    }

    //測試方法
    public function index()
    {
        //這里可以使用model的方法
        $data = $this->model->xxx()
    }
}


到了這里,關(guān)于thinkphp5框架的model支持多地區(qū)數(shù)據(jù)庫切換的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • thinkPhp5返回某些指定字段

    thinkPhp5返回某些指定字段

    或者指定要的字段的數(shù)組? 查詢符合條件的多條數(shù)據(jù) ?

    2024年02月09日
    瀏覽(27)
  • ThinkPHP5遠程命令執(zhí)行漏洞

    ThinkPHP5遠程命令執(zhí)行漏洞

    ThinkPHP是一個快速、兼容而且簡單的輕量級國產(chǎn) PHP開發(fā)框架?,誕生于2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,遵循Apache2開源協(xié)議發(fā)布,使用面向?qū)ο蟮拈_發(fā)結(jié)構(gòu)和 MVC模式 ,從Struts結(jié)構(gòu)移植過來并做了改進和完善,同時也借鑒了國外很多優(yōu)秀的框架和模式。 由于th

    2024年02月11日
    瀏覽(26)
  • Thinkphp5.x全漏洞復現(xiàn)分析

    Thinkphp5.x全漏洞復現(xiàn)分析

    我們可以把namespace理解為一個單獨的空間,事實上它也就是一個空間而已,子命名空間那就是空間里再劃分幾個小空間,舉個例子: 當有多個子命名空間有相同名稱類時,不指定使用哪個命名空間的情況下取最后定義的命名空間中的類,比如上面的 dog 取的時 dogC 中的類,在

    2024年04月22日
    瀏覽(25)
  • ThinkPHP5.0.23 遠程代碼執(zhí)行漏洞

    ThinkPHP5.0.23 遠程代碼執(zhí)行漏洞

    ThinkPHP 是一款運用極廣的 PHP 開發(fā)框架。其 5.0.23 以前的版本中,獲取 method 的方法中沒有正確處理方法名,導致攻擊者可以調(diào)用 Request 類任意方法并構(gòu)造利用鏈,從而導致遠程代碼執(zhí)行漏洞。 百度漏洞 獲得exp 路徑: POST傳參 我用的是hackbar,用burpsuite也行。 burp操作方法 抓包

    2024年02月11日
    瀏覽(23)
  • ThinkPHP5.0.21遠程命令執(zhí)行漏洞

    ThinkPHP5.0.21遠程命令執(zhí)行漏洞

    漏洞出現(xiàn)的背景 : ThinkPHP是?款運?極?的PHP開發(fā)框架。 其5.0.23以前的版本中,獲取method的?法中沒有正確處理?法名, 導致攻擊者可以調(diào)?Request類任意?法并構(gòu)造利?鏈,從?導致遠程代碼執(zhí)?漏洞。 由于ThinkPHP5框架對控制器名沒有進??夠的安全檢測,導致在沒有開

    2024年02月04日
    瀏覽(23)
  • ThinkPHP5系列遠程代碼執(zhí)行漏洞復現(xiàn)(詳細)

    ThinkPHP5系列遠程代碼執(zhí)行漏洞復現(xiàn)(詳細)

    ThinkPHP是一款運用極廣的PHP開發(fā)框架。其版本5中,由于框架對控制器名沒有進行足夠的檢測,會導致在沒有開啟強制路由的情況下可執(zhí)行任意方法,從而導致遠程命令執(zhí)行漏洞。 漏洞危害 啟動環(huán)境 切換到/thinkphp/5.0.23-rce# 目錄下 將version改為2,保存并退出 接著執(zhí)行 此時環(huán)境

    2024年02月12日
    瀏覽(29)
  • 知識筆記(九十)———ThinkPHP5中時間查詢的方法

    使用 where 方法 where 方法支持時間比較,例如: 第三個參數(shù)可以傳入任何有效的時間表達式,會自動識別你的時間字段類型,支持的時間類型包括 timestamps 、 datetime 、 date 和 int 。 使用 whereTime 方法 whereTime 方法提供了日期和時間字段的快捷查詢,示例如下: 還提供了更方便

    2024年01月21日
    瀏覽(19)
  • thinkphp5.0.24反序列化漏洞分析

    thinkphp5.0.24反序列化漏洞分析

    thinkphp5框架: thinkphp5的入口文件在 publicindex.php ,訪問 反序列化起點 寫一個反序列化入口點 全局搜索 __destruct() 函數(shù) thinkphp_5.0.24thinkphplibrarythinkprocesspipesWindows.php 中的 __destruct() 函數(shù),調(diào)用了removeFiles() 跟進removeFiles(),第163行的file_exists可以觸發(fā) __toString 方法 全局搜索

    2023年04月08日
    瀏覽(32)
  • Flask框架-數(shù)據(jù)庫查詢對象轉(zhuǎn)字典或列表:實現(xiàn)model_to_dict的功能

    使用場景: 對于一些簡單的表,可以直接通過該方法將數(shù)據(jù)查詢對象進行序列化操作,轉(zhuǎn)成python中列表或字典結(jié)構(gòu),再展示給前端。 1、model_to_dict方法:對單個查詢對象序列化 2、model_to_list方法:查詢結(jié)果是list時,對多個查詢對象序列化

    2024年02月12日
    瀏覽(22)
  • thinkphp5實現(xiàn)ajax圖片上傳,壓縮保存到服務(wù)器

    thinkphp壓縮圖片插件官方地址 使用Composer安裝ThinkPHP5的圖像處理類庫: composer require topthink/think-image 另外一種方法,傳遞base64圖片,提交圖片數(shù)據(jù)的字符串

    2024年02月07日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包