回覆列表
  • 1 # 程式設計師小助手

    引言

    我們推薦使用laravel的eloquent orm 模型操作資料庫表, 因為特性更為豐富,組裝更為靈活,在程式設計層面操作資料的來來去去非常直觀。 而有些場景不可避免地與原生互動,我們本期就來梳理一下DB門面相關的那些方法。

    學習時間

    系統提供了DB門面用於原生的SQL操作,在程式內引入下面的類:

    use Illuminate\Support\Facades\DB;

    該類的定義很簡單,標準的門面註冊方法:

    class DB extends Facade { protected static function getFacadeAccessor() { return "db"; } }

    僅實現了 getFacadeAccessor 方法,這些類處於同一個名稱空間下的 Facade.php 檔案內。

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

    帶引數繫結的SQL查詢語句:

    DB::select("select * from contacts where validated = ?", [1]);

    或者使用鏈式操作,獲取所有滿足條件的記錄:

    $users = DB::table("users")->get();

    當然了,還有經常用到的多表聯合查詢,複雜的查詢過濾條件:

    DB::table("users") ->join("contacts", function ($join) { $join->on("users.id", "=", "contacts.user_id")->where("contacts.type", "donor"); }) ->get();

    CRUD

    上一節是一些簡單示例,下面我們說一說增刪改查的用法。先說查詢語句, 如果在資料庫最佳化上做的比較好的一些SQL固定寫法,可以使用原生方法固化下來。 比如簡單的:

    $users = DB::select("select * from users");

    該方法會返回一個標準物件的集合。擴充套件一下,帶有查詢條件的SQL原生語句, 為了防止SQL注入,使用引數繫結的方式:

    $usersOfType = DB::select("select * from users where type = ?", [$type]);

    當然也可以使用PDO常用的方式佔位:

    $usersOfType = DB::select("select * from users where type = :type", ["type" => $userType]);

    插入新資料,其實與上述的帶有佔位符引數繫結的SQL查詢語句類似,只是SQL語法不同而已:

    DB::insert("insert into contacts (name, email) values (?, ?)", ["salt", "salt@lot.com"]);

    更新資料也是一樣的:

    $countUpdated = DB::update("update contacts set status = ? where id = ?", [1, $id]);

    $countDeleted = DB::delete("delete from contacts where archived = ?", [1]);

    寫在最後

    本文透過對laravel DB門面的增刪改查用法,向大家展示了基本的引數繫結的用法。 一般我們不推薦使用原生SQL語句操作資料庫,提倡大家把資料庫操作集中到模型層, 充分利用eloquent orm的效能。

    Happy coding :-)

  • 2 # 老C說

    首先 並沒有一丁點,一丁丁點,一丁丁丁點效能強的提升。反而還會帶來效能損耗。說這種orm會提升效能的統統都是放屁滿嘴放屁頭頂長瘡腳底流膿的才會說ORM有效能提升。

    ok 再說其他的。

    用Laravel這種開發框架或者是ORM只是為了統一開發規範,方便團隊開發和團隊管理。而且還有各種輪子可以直接拿來使用。還有豐富的擴充套件

    比如laravel-admin 一個人1天做完管理後臺

    orm 一次編碼同時相容oracle pgsql mysql。

    這才是框架的目的。

  • 3 # 洲連數碼

    這個問題比較細,我不專業。

    laravel是很好的php開發框架,輕量化,易上手,功能強大。

    和資料庫的連線、查刪插改,這個不熟悉,不評價。可以去CSDN上查一查。

  • 中秋節和大豐收的關聯?
  • 散戶要怎麼選到短線強勢股?