<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 數據庫:入門 - [簡介](#introduction) - [配置信息](#configuration) - [數據庫讀寫鏈接](#read-and-write-connections) - [使用多數據庫連接](#using-multiple-database-connections) - [運行原生 SQL 語句](#running-queries) - [監聽查詢事件](#listening-for-query-events) - [數據庫事務](#database-transactions) <a name="introduction"></a> ## 簡介 Laravel 通過使用原始 SQL 與數據庫的各種數據庫進行交互, 非常簡單。尤其流暢的使用 [查詢語句構造器](/docs/{{version}}/queries),和 [Eloquent ORM](/docs/{{version}}/eloquent)。當前,Laravel 支持四種類型的數據庫: <div class="content-list" markdown="1"> - MySQL - Postgres - SQLite - SQL Server </div> <a name="configuration"></a> ### 配置信息 Laravel 應用程序的數據庫配置文件放置在 `config/database.php` 文件中。在這個文件中,您可以定義所有的數據庫連接,并指定默認使用哪個連接. 在此文件內提供了大多數支持的數據庫系統示例。 默認情況下,Laravel 的[環境配置](/docs/{{version}}/configuration#environment-configuration) 示例會使用 [Laravel Homestead](/docs/{{version}}/homestead),這是一種方便的虛擬機,用于在本地機器上進行 Laravel 的開發。當然,您可以根據本地數據庫的需要隨意修改這個配置。 #### SQLite 配置 使用 `touch database/database.sqlite` 命令創建一個新的 SQLite 文件, 您可以通過使用數據庫的絕對路徑,輕松地配置環境變量,并指向這個新創建的數據庫: DB_CONNECTION=sqlite DB_DATABASE=/absolute/path/to/database.sqlite #### SQL Server 配置 Laravel 支持 SQL Server 數據庫; 無論以何種方式, 您都需要將數據庫的連接配置添加到您的 `config/database.php` 配置文件中: 'sqlsrv' => [ 'driver' => 'sqlsrv', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', ], <a name="read-and-write-connections"></a> ### 讀&寫的分離 有時您可能希望使用數據庫的一個連接,只用于 SELECT ,另一個用于 INSERT, UPDATE, 和 DELETE 。 在 Laravel 中無論你使用的是原始查詢,查詢語句構造器,還是 Eloquent ORM 你都能很輕松的實現. 如何配置讀/寫連接,讓我們看一下這個示例: 'mysql' => [ 'read' => [ 'host' => '192.168.1.1', ], 'write' => [ 'host' => '196.168.1.2' ], 'driver' => 'mysql', 'database' => 'database', 'username' => 'root', 'password' => '', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', ], 注意,在上面的示例中,配置數組中添加了兩個鍵 : `read` 和 `write` 。這兩個鍵都包含了一個數組,鍵的值為: `host` 。`read` 和 `write` 連接的其余配置都在 `mysql` 這個主數組里面。 你只需要把項目放在 `read` 和 `write` 數組中,除非你想要覆蓋主數組的值。所以,在這種情況下,`192.168.1.1` 將用作「讀」連接的主機,而 `192.168.1.2` 將用于「寫」連接。這兩個連接會共享在 `mysql` 主數組中的配置。如:數據庫的憑證,前綴,字符集,以及其他的選項。 <a name="using-multiple-database-connections"></a> ### 使用多個數據庫連接 當使用多個連接時,您可以使用 `DB` facade 的 `connection` 方法。 通過 `config/database.php` 配置信息文件中定義好的數據庫連接, 將 `name` 做為 `connection` 這個方法的參數傳遞進去 : $users = DB::connection('foo')->select(...); 您還可以使用 `getPdo` 方法訪問原始的PDO實例 : $pdo = DB::connection()->getPdo(); <a name="running-queries"></a> ## 運行原生的 SQL 語句 配置好數據庫連接后,可以使用 `DB` facade 運行查詢。`DB` facade 為每種類型的查詢提供了方法:`select`,`update`,`insert`,`delete` 和 `statement` 。 #### 運行 Select 運行一個基礎的查詢語句,你可以使用 `DB` facade 的 `select` 方法: <?php namespace App\Http\Controllers; use Illuminate\Support\Facades\DB; use App\Http\Controllers\Controller; 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` 方法將始終返回一個數組結果集。數組中的每個結果將是一個PHP `StdClass` 對象,可以像下面這樣訪問結果值: foreach ($users as $user) { echo $user->name; } #### 使用命名綁定 除了使用 `?` 來表示參數綁定外,你也可以使用命名綁定運行查找: $results = DB::select('select * from users where id = :id', ['id' => 1]); #### 運行 Insert 要執行 `insert` 語句,您可以在 `DB` facade 上使用 `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'); <a name="listening-for-query-events"></a> ### 查詢事件的監聽 如果你希望能夠監控到程序執行的每一條 SQL 語句,那么你可以使用 `listen` 方法。這個方法對于記錄查詢或調試非常有用。您可以將查詢偵聽器注冊到一個 [服務提供者](/docs/{{version}}/providers): <?php namespace App\Providers; use Illuminate\Support\Facades\DB; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * 啟動應用服務。 * * @return void */ public function boot() { DB::listen(function ($query) { // $query->sql // $query->bindings // $query->time }); } /** * 注冊服務提供者。 * * @return void */ public function register() { // } } <a name="database-transactions"></a> ## 數據庫事務 您可以在 `DB` facade 上使用 `transaction` 方法,在數據庫事務中運行一組操作。如果在事務 `Closure` 中拋出一個異常,那么事務將自動回滾。如果 `Closure` 成功執行,事務將自動被提交。您不需要擔心在使用事務方法時手動回滾或提交。 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(); > {tip} 使用 `DB` facade 的事務方法也適用于 [查詢語句構造器](/docs/{{version}}/queries) and [Eloquent ORM](/docs/{{version}}/eloquent)。 ## 譯者署名 | 用戶名 | 頭像 | 職能 | 簽名 | |---|---|---|---| | [@孤雪飄寒](https://laravel-china.org/users/15752) | <img class="avatar-66 rm-style" src="https://dn-phphub.qbox.me/uploads/avatars/15752_1493141445.jpeg"> | 翻譯 | 全桟工程師,[Github](https://github.com/piaohan),[CSDN](http://blog.csdn.net/msmile_my)| --- > {note} 歡迎任何形式的轉載,但請務必注明出處,尊重他人勞動共創開源社區。 > > 轉載請注明:本文檔由 Laravel China 社區 [laravel-china.org](https://laravel-china.org) 組織翻譯,詳見 [翻譯召集帖](https://laravel-china.org/topics/5756/laravel-55-document-translation-call-come-and-join-the-translation)。 > > 文檔永久地址: https://d.laravel-china.org
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看