真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

laravel支持哪些數(shù)據(jù)庫

這篇文章主要介紹“l(fā)aravel支持哪些數(shù)據(jù)庫”,在日常操作中,相信很多人在laravel支持哪些數(shù)據(jù)庫問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”laravel支持哪些數(shù)據(jù)庫”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

專注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)南山免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

laravel支持四種數(shù)據(jù)庫:1、MySQL,一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng);2、PostgreSQL,一款“對象-關(guān)系”型數(shù)據(jù)庫管理系統(tǒng);3、SQLite,一款輕型的關(guān)系型數(shù)據(jù)庫管理系統(tǒng);4、SQL Server,一款關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。

本教程操作環(huán)境:windows7系統(tǒng)、Laravel6版、Dell G3電腦。

Laravel 支持原生的 SQL 查詢、流暢的查詢構(gòu)造器 和 Eloquent ORM 這些操作在各種數(shù)據(jù)庫后臺與數(shù)據(jù)庫的交互變得非常簡單。

目前 Laravel 支持以下四種數(shù)據(jù)庫:

  • MySQL 5.7+ :一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),屬于 Oracle 旗下產(chǎn)品。

  • PostgreSQL 9.6+:一種特性非常齊全的自由軟件的對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng),是以加州大學計算機系開發(fā)的POSTGRES,4.2版本為基礎的對象關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。

  • SQLite 3.8.8+:一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個相對小的C庫中。

  • SQL Server 2017+ :Microsoft 公司推出的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)

配置

數(shù)據(jù)庫的配置文件在 config/database.php 文件中,你可以在這個文件中定義所有的數(shù)據(jù)庫連接配置,并指定默認的數(shù)據(jù)庫連接。這個文件中提供了大部分 Laravel 能夠支持的數(shù)據(jù)庫配置示例。

默認情況下,Laravel 的示例 環(huán)境配置 使用了 Laravel Homestead(它是一種小型的虛擬機,能夠讓你很方便地在本地使用 Laravel 進行開發(fā))。你可以根據(jù)本地數(shù)據(jù)庫的需要修改這個配置文件。

SQLite 配置

在使用 touch database/database.sqlite 一類的創(chuàng)建命令,創(chuàng)建了一個新的 SQLite 數(shù)據(jù)庫之后,你就可以使用數(shù)據(jù)庫的絕對路徑,配置環(huán)境變量來指向這個新創(chuàng)建的數(shù)據(jù)庫:

DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database.sqlite

若要為 SQLite 連接啟用外鍵約束,應將 DB_foreign_KEYS 環(huán)境變量設置為 true:

DB_FOREIGN_KEYS=true

URLs 形式配置

通常,數(shù)據(jù)庫連接使用多個配置值,例如 host、database、username、password 等。這些配置值中的每一個都有其相應的環(huán)境變量。這意味著在生產(chǎn)服務器上配置數(shù)據(jù)庫連接信息時,需要管理多個環(huán)境變量。

一些托管數(shù)據(jù)庫提供程序(如 Heroku)提供單個數(shù)據(jù)庫「URL」,該 URL 在單個字符串中包含數(shù)據(jù)庫的所有連接信息。示例數(shù)據(jù)庫 URL 可能如下所示:

mysql://root:password@127.0.0.1/forge?charset=UTF-8
這些 URLs 通常遵循標準模式約定:
driver://username:password@host:port/database?options

為了方便起見,Laravel 支持這些 URLs,作為使用多個配置選項配置數(shù)據(jù)庫的替代方法。如果存在 url(或相應的 DATABASE_URL 環(huán)境變量)配置選項,則將使用該選項提取數(shù)據(jù)庫連接和憑證信息。

讀寫分離

有時候你希望 SELECT 語句使用一個數(shù)據(jù)庫連接,而 INSERT、UPDATE 和 DELETE 語句使用另一個數(shù)據(jù)庫連接。在 Laravel 中,無論你是使用原生查詢,查詢構(gòu)造器,還是 Eloquent ORM,都能輕松的實現(xiàn)。

為了弄明白讀寫分離是如何配置的,我們先來看個例子:

'mysql' => [
    'read' => [
        'host' => [
            '192.168.1.1',
            '196.168.1.2',
        ],
    ],
    'write' => [
        'host' => [
            '196.168.1.3',
        ],
    ],
    'sticky' => true,
    'driver' => 'mysql',
    'database' => 'database',
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
],

注意在以上的例子中,配置數(shù)組中增加了三個鍵,分別是 read、write 和 sticky。read 和 write 都包含一個鍵為 host 的數(shù)組。而 read 和 write 的其他數(shù)據(jù)庫選項都在鍵為 mysql 的數(shù)組中。

如果你想重寫主數(shù)組中的配置,只需要修改 read 和 write 數(shù)組即可。所以,這個例子中:192.168.1.1 和 192.168.1.2 將作為 「讀」 連接主機,而 192.168.1.3 將作為 「寫」 連接主機。這兩個連接會共享 mysql 數(shù)組的各項配置,如數(shù)據(jù)庫的憑證(用戶名 / 密碼),前綴,字符編碼等。

sticky 選項

sticky 是一個 可選值,它用于立即讀取在當前請求周期內(nèi)已寫入數(shù)據(jù)庫的記錄。若 sticky 選項被啟用,并且當前請求周期內(nèi)執(zhí)行過「寫」操作,那么任何「讀」操作都將使用「寫」連接。這樣可確保同一個請求周期內(nèi)寫入的數(shù)據(jù)可以被立即讀取到,從而避免主從同步延遲導致數(shù)據(jù)不一致的問題。不過是否啟用它,取決于應用程序的需求。

使用多數(shù)據(jù)庫連接

當使用多數(shù)據(jù)庫連接時,你可以通過 DB Facade 門面的 connection 方法訪問每一個連接。傳遞給 connection 方法的參數(shù) name 應該是 config/database.php 配置文件中 connections 數(shù)組中的一個值:

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

你也可以使用一個連接實例上的 getPdo 方法訪問底層的 PDO 實例:

$pdo = DB::connection()->getPdo();

執(zhí)行原生 SQL 查詢

一旦配置好數(shù)據(jù)庫連接后,便可以使用 DB facade 門面運行查詢。DB facade 為每種類型的查詢提供了相應的方法:select,update,insert,delete 和 statement。

執(zhí)行 Select 查詢

你可以使用 DB Facade 的 select 方法來運行基礎的查詢語句:

 $users]);
    }
}

傳遞給 select 方法的第一個參數(shù)就是一個原生的 SQL 查詢,而第二個參數(shù)則是需要綁定到查詢中的參數(shù)值。通常,這些值用于約束 where 語句。參數(shù)綁定可以防止 SQL 注入。

select 方法將始終返回一個 array 數(shù)組,數(shù)組中的每個結(jié)果都是一個 stdClass 對象,可以像下面這樣訪問結(jié)果中的數(shù)值:

foreach ($users as $user) {
    echo $user->name;
}

使用命名綁定

除了使用 ? 表示參數(shù)綁定外,你還可以使用命名綁定的形式來執(zhí)行一個查詢:

$results = DB::select('select * from users where id = :id', ['id' => 1]);

執(zhí)行 Insert 語句

你可以使用 DB Facade 的 insert 方法來執(zhí)行 insert 語句。與 select 方法一樣,該方法將原生 SQL 查詢作為其第一個參數(shù),并將綁定的數(shù)據(jù)作為第二個參數(shù):

DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);

執(zhí)行 Update 語句

update 方法用于更新數(shù)據(jù)庫中現(xiàn)有的記錄。該方法返回該執(zhí)行語句影響的行數(shù):

$affected = DB::update('update users set votes = 100 where name = ?', ['John']);

執(zhí)行 Delete 語句

delete 方法用于從數(shù)據(jù)庫中刪除記錄。與 update 方法一樣,返回受該執(zhí)行語句影響的行數(shù):

$deleted = DB::delete('delete from users');

執(zhí)行普通語句

有些數(shù)據(jù)庫語句不會有任何返回值。對于這些語句,你可以使用 DB Facade 的 statement 方法來運行:

DB::statement('drop table users');

運行未預處理的語句

有時你可能希望在不綁定任何值的情況下運行語句。對于這些類型的操作,可以使用 DB Facade 的 unprepared 方法:

DB::unprepared('update users set votes = 100 where name = "Dries"');

請注意,這些語句不會像上面的語句那樣綁定值。它們可以打開你的應用程序進行 SQL 注入,應該非常小心地使用。

隱式提交

在事務中使用 DB 外觀的 statement 和 unprepared 方法時,必須小心避免導致 [隱式提交] 的語句 (https://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html)。 這些語句將導致數(shù)據(jù)庫引擎間接提交整個事務,從而使 Laravel 不知道數(shù)據(jù)庫的事務級別。這種語句的一個例子是創(chuàng)建數(shù)據(jù)庫表:

DB::unprepared('create table a (col varchar(1) null)');

請參考 MySQL 手冊中的觸發(fā)隱式提交的所有語句列表。

監(jiān)聽查詢事件

如果你想監(jiān)控程序執(zhí)行的每一個 SQL 查詢,你可以使用 listen 方法。這個方法對于記錄查詢或調(diào)試非常有用。你可以在 服務提供器 中注冊你的查詢監(jiān)聽器:

sql
            // $query->bindings
            // $query->time
        });
    }
}

數(shù)據(jù)庫事務

你可以使用 DB facade 的 transaction 方法在數(shù)據(jù)庫事務中運行一組操作。如果事務的閉包 Closure 中出現(xiàn)一個異常,事務將會回滾。如果事務閉包 Closure 執(zhí)行成功,事務將自動提交。一旦你使用了 transaction, 就不必擔心手動回滾或提交的問題:

DB::transaction(function () {
    DB::table('users')->update(['votes' => 1]);
    DB::table('posts')->delete();
});

處理死鎖

transaction 方法接受一個可選的第二個參數(shù),該參數(shù)用來表示事務發(fā)生死鎖時重復執(zhí)行的次數(shù)。一旦定義的次數(shù)嘗試完畢,就會拋出一個異常:

DB::transaction(function () {
    DB::table('users')->update(['votes' => 1]);
    DB::table('posts')->delete();
}, 5);

手動使用事務

如果你想要手動開始一個事務,并且對回滾和提交能夠完全控制,那么你可以使用 DB Facade 的 beginTransaction 方法:

DB::beginTransaction();

你可以使用 rollBack 方法回滾事務:

DB::rollBack();

最后,你可以使用 commit 方法提交事務:

DB::commit();

技巧:DB facade 的事務方法同樣適用于 查詢構(gòu)造器 和 Eloquent ORM。

連接到數(shù)據(jù)庫 CLI

如果要連接到數(shù)據(jù)庫的 CLI,可以使用 db Artisan 命令:

php artisan db

如果需要,可以指定數(shù)據(jù)庫連接名稱以連接到不是默認連接的數(shù)據(jù)庫連接:

php artisan db mysql

到此,關(guān)于“l(fā)aravel支持哪些數(shù)據(jù)庫”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)頁標題:laravel支持哪些數(shù)據(jù)庫
文章分享:http://weahome.cn/article/gddgsh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部