日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

laravel5.6 mysql_快速入门 |《Laravel 5.6 中文文档 5.6》| Laravel China 社区

發(fā)布時間:2023/12/2 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 laravel5.6 mysql_快速入门 |《Laravel 5.6 中文文档 5.6》| Laravel China 社区 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文檔最新版為 8.x,舊版本可能放棄維護,推薦閱讀最新版!

數(shù)據(jù)庫:入門

簡介

Laravel 能使用原生 SQL、查詢構(gòu)造器 和 Eloquent ORM 在各種數(shù)據(jù)庫后臺與數(shù)據(jù)庫進行非常簡單的交互。當前 Laravel 支持四種數(shù)據(jù)庫:

MySQL

Postgres

SQLite

SQL Server

配置

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

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

SQLite 配置

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

DB_CONNECTION=sqlite

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

讀 & 寫連接

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

想了解數(shù)據(jù)庫讀寫分離如何配置, 讓我們看看這個例子:

'mysql' => [

'read' => [

'host' => '192.168.1.1',

],

'write' => [

'host' => '196.168.1.2'

],

'sticky' => true,

'driver' => 'mysql',

'database' => 'database',

'username' => 'root',

'password' => '',

'charset' => 'utf8mb4',

'collation' => 'utf8mb4_unicode_ci',

'prefix' => '',

],

注意在上邊的例子中,配置數(shù)組中增加了 3 個鍵: 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 將作為「寫」連接的主機。這兩個連接會共享 mysql 主數(shù)組的各項配置,如數(shù)據(jù)庫的憑據(jù),前綴,字符編碼 等。

sticky 選項

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

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

當使用多個數(shù)據(jù)庫連接時,你可以通過 DB facade 的 connection 方法訪問每一個連接。將 name 作為 connection 方法的參數(shù)傳遞,即可使用 config/database.php 配置文件中對應(yīng)名稱的連接:

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

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

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

運行原生 SQL 查詢

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

運行 Select 查詢

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

namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;

use App\Http\Controllers\Controller;

class UserController extends Controller

{

/**

* 顯示所有應(yīng)用程序的用戶列表

*

* @return Response

*/

public function index()

{

$users = DB::select('select * from users where active = ?', [1]);

return view('user.index', ['users' => $users]);

}

}

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

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

foreach ($users as $user) {

echo $user->name;

}

使用命名綁定

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

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

運行插入語句

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

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

運行更新語句

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

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

運行刪除語句

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

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

運行普通語句

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

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

監(jiān)聽查詢事件

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

namespace App\Providers;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider

{

/**

* 啟動應(yīng)用服務(wù)

*

* @return void

*/

public function boot()

{

DB::listen(function ($query) {

// $query->sql

// $query->bindings

// $query->time

});

}

/**

* 注冊服務(wù)提供器

*

* @return void

*/

public function register()

{

//

}

}

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

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

DB::transaction(function () {

DB::table('users')->update(['votes' => 1]);

DB::table('posts')->delete();

});

處理死鎖

transaction 方法接受一個可選的第二參數(shù),該參數(shù)表示事務(wù)發(fā)生死鎖時重試的次數(shù)。 一旦這些嘗試用盡,就會拋出一個異常:

DB::transaction(function () {

DB::table('users')->update(['votes' => 1]);

DB::table('posts')->delete();

}, 5);

手動使用事務(wù)

如果您想要手工開始一個事務(wù),并且對回滾和提交有完全的控制,那么您可以在 DB facade 上使用 beginTransaction 方法:

DB::beginTransaction();

你可以使用 rollBack 方法回滾事務(wù):

DB::rollBack();

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

DB::commit();

{tip} DB facade 的事務(wù)方法同樣適用于 查詢構(gòu)造器 和 Eloquent ORM。

本譯文僅用于學(xué)習和交流目的,轉(zhuǎn)載請務(wù)必注明文章譯者、出處、和本文鏈接

我們的翻譯工作遵照 CC 協(xié)議,如果我們的工作有侵犯到您的權(quán)益,請及時聯(lián)系我們。

總結(jié)

以上是生活随笔為你收集整理的laravel5.6 mysql_快速入门 |《Laravel 5.6 中文文档 5.6》| Laravel China 社区的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。