」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Laravel 入門:查詢產生器初學者指南

Laravel 入門:查詢產生器初學者指南

發佈於2024-11-08
瀏覽:671

Getting Started with Laravel: A Beginner

Laravel 的 查询生成器 提供了一个强大、流畅的界面,用于在 PHP 中构建 SQL 查询。它允许您以富有表现力的、类似 SQL 的语法与数据库交互,同时抽象出大部分复杂性。

我们将演练 Laravel 应用程序中的典型用例,使用查询生成器执行各种任务,例如选择、插入、更新和删除数据。


第 1 步:设置 Laravel 项目

如果您没有 Laravel 项目,您可以按如下方式设置一个:

composer create-project --prefer-dist laravel/laravel laravel-query-builder
cd laravel-query-builder
php artisan serve

确保在 .env 文件中设置数据库配置:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=your_username
DB_PASSWORD=your_password

运行迁移以创建默认表:

php artisan migrate

第 2 步:在控制器中使用查询生成器

让我们创建一个控制器来演示查询生成器的用法:

php artisan make:controller UserController

使用以下代码编辑UserController.php:

get();

        return response()->json($users);
    }

    // Insert a new user
    public function store(Request $request)
    {
        // Step 4: Insert a new user
        DB::table('users')->insert([
            'name' => $request->name,
            'email' => $request->email,
            'password' => bcrypt($request->password),
        ]);

        return response()->json(['message' => 'User created successfully!']);
    }

    // Update an existing user
    public function update(Request $request, $id)
    {
        // Step 5: Update user by ID
        DB::table('users')
            ->where('id', $id)
            ->update([
                'name' => $request->name,
                'email' => $request->email,
            ]);

        return response()->json(['message' => 'User updated successfully!']);
    }

    // Delete a user
    public function destroy($id)
    {
        // Step 6: Delete user by ID
        DB::table('users')->where('id', $id)->delete();

        return response()->json(['message' => 'User deleted successfully!']);
    }
}

第 3 步:检索数据

使用查询生成器从用户表中选择所有行:

$users = DB::table('users')->get();
  • 描述
    • DB::table('users') 方法以 users 表为目标。
    • get() 方法检索该表中的所有记录。

响应示例:

[
    {
        "id": 1,
        "name": "John Doe",
        "email": "[email protected]"
    },
    {
        "id": 2,
        "name": "Jane Doe",
        "email": "[email protected]"
    }
]

第四步:插入数据

使用查询生成器插入新用户:

DB::table('users')->insert([
    'name' => 'Alice',
    'email' => '[email protected]',
    'password' => bcrypt('password123'),
]);
  • 描述
    • insert() 方法将新行插入到 users 表中。
    • 数据作为关联数组传递,其中键与列名称匹配。

这会将新用户添加到用户表中。


第5步:更新数据

要更新现有记录,请使用 update():

DB::table('users')
    ->where('id', 1)
    ->update([
        'name' => 'John Smith',
        'email' => '[email protected]'
    ]);
  • 描述
    • where() 子句选择 id = 1 的行。
    • update() 方法修改所选行的姓名和电子邮件字段。

这将更新用户表中 ID 为 1 的用户。


第6步:删除数据

要从数据库中删除记录,请使用delete():

DB::table('users')->where('id', 2)->delete();
  • 描述
    • where()子句指定选择ID为2的用户的条件。
    • delete() 方法从表中删除匹配的行。

这将删除 ID 为 2 的用户。


第 7 步:使用查询生成器进行过滤

您可以链接其他方法来过滤数据或向查询添加条件。

示例:检索具有特定条件的用户

$users = DB::table('users')
    ->where('email', 'like', '%example.com%')
    ->orderBy('name', 'asc')
    ->get();
  • 描述
    • where() 子句添加一个条件,获取电子邮件包含 example.com 的用户。
    • orderBy() 方法按名称升序对用户进行排序。

第8步:分页

Laravel 的查询生成器可以轻松对结果进行分页。

$users = DB::table('users')->paginate(10);
  • 描述
    • paginate() 方法将结果分成几页,每页显示 10 个结果。

第9步:交易

使用数据库事务来确保多个查询执行成功。如果一个查询失败,所有更改都会回滚。

DB::transaction(function () {
    DB::table('users')->insert([
        'name' => 'John Doe',
        'email' => '[email protected]',
        'password' => bcrypt('password123')
    ]);

    DB::table('orders')->insert([
        'user_id' => 1,
        'order_total' => 500
    ]);
});
  • 描述
    • transaction() 方法确保用户和订单表插入均成功执行。如果其中一个失败,两个操作都将回滚。

第 10 步:原始查询

如果您需要运行原始 SQL,Laravel 的查询生成器允许这样做:

$users = DB::select('SELECT * FROM users WHERE id = ?', [1]);
  • 描述
    • select() 方法可用于执行原始 SQL 查询。
    • 它使用准备好的语句(?)来保证安全,防止 SQL 注入。

结论

Laravel 的查询生成器提供了一种强大且灵活的方式与数据库交互,抽象了大部分 SQL 复杂性。通过分解每个部分——检索、插入、更新、删除、过滤等等——您可以以干净、有组织的方式轻松管理数据库交互。

此示例提供了查询生成器的基本指南。随着应用程序的增长,您可以使用更高级的功能,例如连接、子查询和 Eloquent 的预加载。

版本聲明 本文轉載於:https://dev.to/mdarifulhaque/getting-started-with-laravel-a-beginners-guide-to-query-builder-j0i?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • PHP 會話管理中的 session_unset() 和 session_destroy() 有什麼不同?
    PHP 會話管理中的 session_unset() 和 session_destroy() 有什麼不同?
    揭示PHP 中session_unset() 和session_destroy() 的獨特作用在PHP 會話管理領域,出現了兩個關鍵函數: session_unset() 和session_destroy()。雖然它們似乎都圍繞著會話資料操作,但它們的功能和效果卻顯著不同。 1。理解差異根據 PHP...
    程式設計 發佈於2024-11-08
  • 使用 Vue jsx 進行動態佈局:靈活且可維護的 UI 指南
    使用 Vue jsx 進行動態佈局:靈活且可維護的 UI 指南
    Written by Dubem Izuorah Have you ever spent hours tweaking the same web layout across multiple pages or struggled to make your UI adapt to changing ...
    程式設計 發佈於2024-11-08
  • 以下是一些標題選項,請記住問題格式和文章的重點是控制選擇框選項寬度:

**選項 1(更多技術性):**
* **如何控制Sele的寬度
    以下是一些標題選項,請記住問題格式和文章的重點是控制選擇框選項寬度: **選項 1(更多技術性):** * **如何控制Sele的寬度
    如何控制選擇框選項的寬度當選擇框中的選項超出框的寬度時,可能會造成混亂以及笨拙的外觀。為了解決這個問題,我們可以同時使用 CSS 和 JavaScript 來自訂選項的寬度並截斷任何多餘的文字。 CSS 方法:雖然單獨使用 CSS 是不行的足以設定選項的寬度,我們可以利用它來固定選擇框本身的寬度。透...
    程式設計 發佈於2024-11-08
  • C++ 異常說明符值得這麼麻煩嗎?
    C++ 異常說明符值得這麼麻煩嗎?
    C 中的異常說明符:你應該使用它們嗎? C 中的例外說明符可讓您指示函數是否可能拋出特定的例外類型。然而,由於擔心 Visual Studio .NET 中的編譯器執行、程式終止和非標準行為,人們對其實際用途產生了疑問。 為什麼不使用異常說明符:有限執行:編譯器不嚴格執行異常說明符,從而減少了它們提...
    程式設計 發佈於2024-11-08
  • 使用 .EJS 範本配置 Express
    使用 .EJS 範本配置 Express
    通常,我使用經典的入門版。 Expressjs.com const express = require('express') const app = express() const port = 3000 app.set('view engine', 'ejs') app.use(express....
    程式設計 發佈於2024-11-08
  • 如何將自訂字體新增至 Tailwind - 對於網頁和本機下載的字體
    如何將自訂字體新增至 Tailwind - 對於網頁和本機下載的字體
    创建 Web 应用程序时,包含您喜欢的字体就像锦上添花。字体增强文本效果,使网站更具吸引力,并提供更好的用户体验。设计师和开发人员对某些字体又爱又恨,使用默认字体可能会限制他们的创造力。添加自定义字体使开发人员可以自由地将外部字体添加到他们的应用程序中。 先决条件 在本教程中,我强烈...
    程式設計 發佈於2024-11-08
  • JavaScript 柯里化的詳細討論
    JavaScript 柯里化的詳細討論
    Currying হলো একটি ফাংশনাল প্রোগ্রামিং কৌশল যেখানে একটি ফাংশন একাধিক আর্গুমেন্ট নেওয়ার পরিবর্তে একটি একক আর্গুমেন্ট গ্রহণ করে এবং একটি নতুন ফাংশন রিটা...
    程式設計 發佈於2024-11-08
  • 了解 Python 裝飾器:深入探討
    了解 Python 裝飾器:深入探討
    Python 裝飾器是強大的工具,允許我們修改或增強函數或方法的行為。常見用例包括日誌記錄、授權等。 然而,當被要求定義裝飾器時,許多人可能會說, 它是函數的包裝器。 雖然這在技術上是正確的,但幕後還發生了更多事情。 剖析一個簡單的裝飾器 讓我們探討一個簡單的例子: def my_decora...
    程式設計 發佈於2024-11-08
  • 課程計畫:年級學生 Python 基礎知識(初級)
    課程計畫:年級學生 Python 基礎知識(初級)
    客观的: 在本课程结束时,学生将对 Python 编程有基本的了解,包括变量、基本数据类型、循环和函数。他们将使用 Python 创建简单的程序,运用逻辑思维和解决问题的技能。 持续时间:6 节课 第 1 课:Python 简介和设置 目标:让学生熟...
    程式設計 發佈於2024-11-08
  • 如何在 Java 中正確複製二維數組以保留修改?
    如何在 Java 中正確複製二維數組以保留修改?
    透過複製保留二維數組修改在 Java 中,建立物件副本時,了解引用分配行為至關重要。在給定的場景中,定義了兩個名為 current 和 old 的二維數組,以及複製內容的方法。 old() 方法將 current 陣列指派給 old 。然而,這只是將引用傳輸到記憶體中的相同數組。當 current ...
    程式設計 發佈於2024-11-08
  • 使用 JavaScript 創建令人著迷的粒子動畫
    使用 JavaScript 創建令人著迷的粒子動畫
    這就是我們要創建的,將滑鼠移到粒子上即可查看效果。 在本文中,我將引導您完成使用 JavaScript 和 HTML5 畫佈建立迷人粒子動畫的過程。該專案不僅增強了網頁的美觀性,而且還是深入研究一些有趣的編碼概念的絕佳機會。讓我們開始吧! 項目概況 動畫的特點是粒子圍繞中心點以圓...
    程式設計 發佈於2024-11-08
  • 使用 JavaScript 釋放大型語言模型的力量:實際應用程式
    使用 JavaScript 釋放大型語言模型的力量:實際應用程式
    In recent years, Large Language Models (LLMs) have revolutionized how we interact with technology, enabling machines to understand and generate human-...
    程式設計 發佈於2024-11-08
  • Bootstrap 與 Tailwind 整合:Pro 與 Contro | Bootstrap 和 Tailwind:優點和缺點
    Bootstrap 與 Tailwind 整合:Pro 與 Contro | Bootstrap 和 Tailwind:優點和缺點
    简介 |介绍 意大利语: 本文有意大利语和英语版本。向下滚动查看英文版本。 英语: 本文有意大利语和英语版本。向下滚动查看英文版本。 意大利语版 Bootstrap 和 Tailwind 集成简介 近年来,Bootstrap和Tailwind CSS已经成为前端开发最流行的两个框架。 Boot...
    程式設計 發佈於2024-11-08
  • 我們如何使用 Gin 框架來增強 Go 應用程式中的錯誤處理?
    我們如何使用 Gin 框架來增強 Go 應用程式中的錯誤處理?
    更好的錯誤處理問題在Go應用程式中,我們如何透過定義自訂錯誤類型(例如appError和實現自定義處理程序來捕獲錯誤並將其寫入回應中?正常的流程邏輯。 ))建立錯誤中間件:func JSONAppErrorReporter() gin.HandlerFunc { 返回 func(c *gin...
    程式設計 發佈於2024-11-08
  • DOM API 終極指南
    DOM API 終極指南
    // Selecting Elements: document is not the real DOM element. document.documentElement; // Select the entire page document.head; // Select the head doc...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3