91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

laravel支持哪些數據庫

發布時間:2022-02-14 16:06:00 來源:億速云 閱讀:205 作者:iii 欄目:編程語言

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

laravel支持四種數據庫:1、MySQL,一個關系型數據庫管理系統;2、PostgreSQL,一款“對象-關系”型數據庫管理系統;3、SQLite,一款輕型的關系型數據庫管理系統;4、SQL Server,一款關系型數據庫管理系統。

本教程操作環境:windows7系統、Laravel6版、Dell G3電腦。

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

目前 Laravel 支持以下四種數據庫:

  • MySQL 5.7+ :一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,屬于 Oracle 旗下產品。

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

  • SQLite 3.8.8+:一款輕型的數據庫,是遵守ACID的關系型數據庫管理系統,它包含在一個相對小的C庫中。

  • SQL Server 2017+ :Microsoft 公司推出的關系型數據庫管理系統

配置

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

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

SQLite 配置

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

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

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

DB_FOREIGN_KEYS=true

URLs 形式配置

通常,數據庫連接使用多個配置值,例如 hostdatabaseusernamepassword 等。這些配置值中的每一個都有其相應的環境變量。這意味著在生產服務器上配置數據庫連接信息時,需要管理多個環境變量。

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

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

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

讀寫分離

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

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

'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' => '',
],

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

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

sticky 選項

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

使用多數據庫連接

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

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

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

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

執行原生 SQL 查詢

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

執行 Select 查詢

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

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
class UserController extends Controller
{
    /**
     * 顯示應用程序中所有用戶的列表
     *
     * @return Response
     */
    public function index()
    {
        $users = DB::select('select * from users where active = ?', [1]);
        return view('user.index', ['users' => $users]);
    }
}

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

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

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

使用命名綁定

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

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

執行 Insert 語句

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

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

執行 Update 語句

update 方法用于更新數據庫中現有的記錄。該方法返回該執行語句影響的行數:

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

執行 Delete 語句

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

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

執行普通語句

有些數據庫語句不會有任何返回值。對于這些語句,你可以使用 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)。 這些語句將導致數據庫引擎間接提交整個事務,從而使 Laravel 不知道數據庫的事務級別。這種語句的一個例子是創建數據庫表:

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

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

監聽查詢事件

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

<?php
namespace App\Providers;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
    /**
     * 注冊所有應用的服務
     *
     * @return void
     */
    public function register()
    {
        //
    }
    /**
     * 引導所有應用的服務
     *
     * @return void
     */
    public function boot()
    {
        DB::listen(function ($query) {
            // $query->sql
            // $query->bindings
            // $query->time
        });
    }
}

數據庫事務

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

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

處理死鎖

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

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 的事務方法同樣適用于 查詢構造器 和 Eloquent ORM。

連接到數據庫 CLI

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

php artisan db

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

php artisan db mysql

到此,關于“laravel支持哪些數據庫”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

双鸭山市| 阿克| 镇安县| 大名县| 祁门县| 闵行区| 大城县| 加查县| 永新县| 通山县| 务川| 湘乡市| 岳西县| 合肥市| 寻甸| 盘锦市| 布尔津县| 青州市| 钦州市| 高台县| 华池县| 西藏| 游戏| 闽清县| 泰宁县| 隆回县| 清丰县| 宣城市| 乐安县| 河源市| 周宁县| 山东| 莫力| 怀化市| 武平县| 高邮市| 大关县| 贵港市| 清原| 句容市| 巴中市|