首頁 php框架 Laravel laravel支援什麼資料庫

laravel支援什麼資料庫

Feb 14, 2022 pm 03:38 PM
laravel 資料庫

laravel支援四種資料庫:1、MySQL,一個關聯式資料庫管理系統;2、PostgreSQL,一個「物件-關聯」型資料庫管理系統;3、SQLite,一款輕型的關聯式資料庫管理系統;4、SQL Server,一款關係型資料庫管理系統。

laravel支援什麼資料庫

本教學操作環境: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 形式配置

通常,資料庫連線使用多個設定值,例如host

database

usernamepassword

等。這些配置值中的每一個都有其對應的環境變數。這意味著在生產伺服器上配置資料庫連接資訊時,需要管理多個環境變數。

一些託管資料庫提供者(如 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(&#39;select * from users where active = ?&#39;, [1]);
        return view(&#39;user.index&#39;, [&#39;users&#39; => $users]);
    }
}
登入後複製

传递给 select 方法的第一个参数就是一个原生的 SQL 查询,而第二个参数则是需要绑定到查询中的参数值。通常,这些值用于约束 where 语句。参数绑定可以防止 SQL 注入。

select 方法将始终返回一个 array 数组,数组中的每个结果都是一个 stdClass 对象,可以像下面这样访问结果中的数值:

foreach ($users as $user) {
    echo $user->name;
}
登入後複製

使用命名绑定

除了使用 ? 表示参数绑定外,你还可以使用命名绑定的形式来执行一个查询:

$results = DB::select(&#39;select * from users where id = :id&#39;, [&#39;id&#39; => 1]);
登入後複製

执行 Insert 语句

你可以使用 DB Facade 的 insert 方法来执行 insert 语句。与 select 方法一样,该方法将原生 SQL 查询作为其第一个参数,并将绑定的数据作为第二个参数:

DB::insert(&#39;insert into users (id, name) values (?, ?)&#39;, [1, &#39;Dayle&#39;]);
登入後複製

执行 Update 语句

update 方法用于更新数据库中现有的记录。该方法返回该执行语句影响的行数:

$affected = DB::update(&#39;update users set votes = 100 where name = ?&#39;, [&#39;John&#39;]);
登入後複製

执行 Delete 语句

delete 方法用于从数据库中删除记录。与 update 方法一样,返回受该执行语句影响的行数:

$deleted = DB::delete(&#39;delete from users&#39;);
登入後複製

执行普通语句

有些数据库语句不会有任何返回值。对于这些语句,你可以使用 DB Facade 的 statement 方法来运行:

DB::statement(&#39;drop table users&#39;);
登入後複製

运行未预处理的语句

有时你可能希望在不绑定任何值的情况下运行语句。对于这些类型的操作,可以使用 DB Facade 的 unprepared 方法:

DB::unprepared(&#39;update users set votes = 100 where name = "Dries"&#39;);
登入後複製

请注意,这些语句不会像上面的语句那样绑定值。它们可以打开你的应用程序进行 SQL 注入,应该非常小心地使用。

隐式提交

在事务中使用 DB 外观的 statement 和 unprepared 方法时,必须小心避免导致 [隐式提交] 的语句 (https://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html)。 这些语句将导致数据库引擎间接提交整个事务,从而使 Laravel 不知道数据库的事务级别。这种语句的一个例子是创建数据库表:

DB::unprepared(&#39;create table a (col varchar(1) null)&#39;);
登入後複製

请参考 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(&#39;users&#39;)->update([&#39;votes&#39; => 1]);
    DB::table(&#39;posts&#39;)->delete();
});
登入後複製

处理死锁

transaction 方法接受一个可选的第二个参数,该参数用来表示事务发生死锁时重复执行的次数。一旦定义的次数尝试完毕,就会抛出一个异常:

DB::transaction(function () {
    DB::table(&#39;users&#39;)->update([&#39;votes&#39; => 1]);
    DB::table(&#39;posts&#39;)->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视频教程

以上是laravel支援什麼資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1254
24
laravel入門實例 laravel入門實例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

解決 Craft CMS 中的緩存問題:使用 wiejeben/craft-laravel-mix 插件 解決 Craft CMS 中的緩存問題:使用 wiejeben/craft-laravel-mix 插件 Apr 18, 2025 am 09:24 AM

在使用CraftCMS開發網站時,常常會遇到資源文件緩存的問題,特別是當你頻繁更新CSS和JavaScript文件時,舊版本的文件可能仍然被瀏覽器緩存,導致用戶無法及時看到最新的更改。這個問題不僅影響用戶體驗,還會增加開發和調試的難度。最近,我在項目中遇到了類似的困擾,經過一番探索,我找到了wiejeben/craft-laravel-mix這個插件,它完美地解決了我的緩存問題。

Laravel如何學習 怎麼免費學習Laravel Laravel如何學習 怎麼免費學習Laravel Apr 18, 2025 pm 12:51 PM

想要學習 Laravel 框架,但苦於沒有資源或經濟壓力?本文為你提供了免費學習 Laravel 的途徑,教你如何利用網絡平台、文檔和社區論壇等資源,從入門到掌握,為你的 PHP 開發之旅奠定堅實基礎。

laravel用戶登錄功能 laravel用戶登錄功能 Apr 18, 2025 pm 12:48 PM

Laravel 提供了一個全面的 Auth 框架,用於實現用戶登錄功能,包括:定義用戶模型(Eloquent 模型)創建登錄表單(Blade 模板引擎)編寫登錄控制器(繼承 Auth\LoginController)驗證登錄請求(Auth::attempt)登錄成功後重定向(redirect)考慮安全因素:哈希密碼、防 CSRF 保護、速率限制和安全標頭。此外,Auth 框架還提供重置密碼、註冊和驗證電子郵件等功能。詳情請參閱 Laravel 文檔:https://laravel.com/doc

laravel框架安裝方法 laravel框架安裝方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

laravel有哪些版本 laravel新手版本選擇方法 laravel有哪些版本 laravel新手版本選擇方法 Apr 18, 2025 pm 01:03 PM

在面向初学者的 Laravel 框架版本选择指南中,本文深入探討了 Laravel 的版本差異,旨在協助初學者在眾多版本之間做出明智的選擇。我們將重點介紹每個版本的關鍵特徵、比較它們的優缺點,並提供有用的建議,幫助新手根據他們的技能水準和項目需求挑選最合適的 Laravel 版本。對於初學者來說,選擇一個合適的 Laravel 版本至關重要,因為它可以顯著影響他們的學習曲線和整體開發體驗。

laravel怎麼查看版本號 laravel查看版本號方法 laravel怎麼查看版本號 laravel查看版本號方法 Apr 18, 2025 pm 01:00 PM

Laravel框架內置了多種方法來方便地查看其版本號,滿足開發者的不同需求。本文將探討這些方法,包括使用Composer命令行工具、訪問.env文件或通過PHP代碼獲取版本信息。這些方法對於維護和管理Laravel應用程序的版本控制至關重要。

甲骨文在商業世界中的作用 甲骨文在商業世界中的作用 Apr 23, 2025 am 12:01 AM

Oracle不僅是數據庫公司,還是雲計算和ERP系統的領導者。 1.Oracle提供從數據庫到雲服務和ERP系統的全面解決方案。 2.OracleCloud挑戰AWS和Azure,提供IaaS、PaaS和SaaS服務。 3.Oracle的ERP系統如E-BusinessSuite和FusionApplications幫助企業優化運營。

See all articles