日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

引言

在鞏固了基礎知識之后,我們把目標轉向框架的學習。Laravel 是一個全球流行的框架,開發(fā)者和使用者都比較活躍,周邊有許多庫,和第三方資源均提供了支持。

3分鐘短文 | Laravel同時連接多個數據庫,你用啥辦法?

 

今天說一下,如何在框架里同時連接多個數據庫?

學習時間

為什么需要連接多個數據庫呢?因為,應用程序和數據庫有可能不在同一臺服務器。而數據庫服務器,并不能包含所有的業(yè)務表。所以經過拆分的數據庫需要我們建立多個連接。

一般我們在 .env 文件內指定本地或者線上使用的配置項。這樣做比較靈活,很容易區(qū)分出不同的設置。

首先我們在 .env 文件內添加如下配置:

DB_CONNECTION=MySQL
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database1
DB_USERNAME=root
DB_PASSword=secret

DB_CONNECTION_SECOND=mysql
DB_HOST_SECOND=127.0.0.1
DB_PORT_SECOND=3306
DB_DATABASE_SECOND=database2
DB_USERNAME_SECOND=root
DB_PASSWORD_SECOND=secret 

當然 DB_HOST 可以是任何遠程的數據庫,或者本地的數據庫資源。有多少個,就需要手動定義多少個,只是把常量加以區(qū)分,以便在程序內讀取。

接著在配置目錄數據庫配置項 config/database.php 內添加這些連接:

'mysql' => [
    'driver'    => env('DB_CONNECTION'),
    'host'      => env('DB_HOST'),
    'port'      => env('DB_PORT'),
    'database'  => env('DB_DATABASE'),
    'username'  => env('DB_USERNAME'),
    'password'  => env('DB_PASSWORD'),
],

'mysql2' => [
    'driver'    => env('DB_CONNECTION_SECOND'),
    'host'      => env('DB_HOST_SECOND'),
    'port'      => env('DB_PORT_SECOND'),
    'database'  => env('DB_DATABASE_SECOND'),
    'username'  => env('DB_USERNAME_SECOND'),
    'password'  => env('DB_PASSWORD_SECOND'),
],

其中 “mysql”和“mysql2”就是數據庫連接 $connection 的別名,用以區(qū)分不同的資源。如果方便記憶,可以使用諸如 “mysql_server_a”"mysql_server_b" 這樣的符號。

數據庫操作

如果你遵循框架的數據庫操作方式,首先是進行表的遷移,那么創(chuàng)建在 migrations 內,指定給哪個數據庫創(chuàng)建表,則需要這樣寫:

Schema::connection('mysql2')->create('some_table', function($table)
{
    $table->increments('id');
}); 

對于查詢操作,使用原生的方式,需要明確指定從某個連接操作sql,需要這樣寫:

$users = DB::connection('mysql2')->select(...);

當然了,我們不推薦在程序內進行原生sql操作,因為這樣破壞了數據庫表字段的可追溯性,也喪失了 Eloquent ORM 的強大功能。

所以我們使用模型操作數據庫,那么指定某個 Model 使用哪個數據庫的哪個表,只需要在模型文件內顯式聲明:

class SomeModel extends Model
{
    protected $connection = 'mysql2';
}

這樣,程序內對于 SomeModel 的所有操作就都是針對 “mysql2”這個連接所指向的數據庫。

Laravel 的靈活還不止這一點半點,如果在Model內不指定$connection,你還可以在控制器內,在命令行程序內,在隊列內,在中間件內,在監(jiān)聽器內,都可以任意指定某個Model連接:

class SomeController extends BaseController {
    public function someMethod()
    {
        $someModel = new SomeModel;
        $someModel->setConnection('mysql2'); // 非靜態(tài)方法
        $something = $someModel->find(1);
        $something = SomeModel::on('mysql2')->find(1); // 靜態(tài)方法
        return $something;
    }
}

這樣優(yōu)雅靈活的用法,有沒有眼前一亮!

寫在最后

本文通過多種方法,演示了Laravel從數據庫連接配置,到程序內使用的方方面面。還沒有體驗這個框架的同學,你真的值得一試了。

分享到:
標簽:Laravel
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰(zhàn)2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定