Laravel 的 ORM 返回的數據類型小結

相信不少人在學習 Laravel 時,會對 ORM 返回的數據類型產生混淆,如返回集合,模或者整數類型,下面將對增刪改查操做進行一個小結。html

1、簡介

Laravel 的數據庫查詢構造器提供了一個方便、流暢的接口,用來建立及運行數據庫查詢語句。它能用來執行應用程序中的大部分數據庫操做,且能在全部被支持的數據庫系統中使用。laravel

Laravel 的查詢構造器使用 PDO 參數綁定,來保護你的應用程序免受 SQL 注入的攻擊。在綁定傳入字符串前不須要清理它們。數據庫

2、查詢

一、從數據表中獲取全部的數據列

1. 查詢中的 getall 方法返回的是集合。學習

示例#code

你可使用 DB facade 的 table 方法開始查詢。這個 table 方法針對查詢表返回一個查詢構造器實例,容許你在查詢時鏈式調用更多約束,並使用 get方法獲取最終結果:htm

public function index()
 {
   $users = DB::table('users')->get();
   return view('user.index', ['users' => $users]);
 }

get 方法會返回一個 Illuminate\Support\Collection 結果集,其中每一個結果都是一個 PHP StdClass 對象的實例。您能夠經過訪問列中對象的屬性訪問每一個列的值:對象

foreach ($users as $user) {
    echo $user->name;
}

2.當沒有數據時,返回的是空集合。
集合能夠在任什麼時候候調用 toArray 方法,若是查詢到的結果爲空,獲得的是[],能夠用 empty() 方法判斷是否有數據。接口

二、從數據表中獲取單個列或行

若是你只須要從數據表中獲取一行數據,則可使用 first 方法。這個方法將返回單個 StdClass 對象:字符串

$user = DB::table('users')->where('name', 'John')->first();

echo $user->name;

若是你不須要一整行數據,則可使用 value 方法來從單條記錄中取出單個值。此方法將直接返回字段的值:get

$email = DB::table('users')->where('name', 'John')->value('email');

first 若是查不到數據,返回的是 null,可用 empty 判斷。

3、插入數據

  • 添加數據的 create、insert 方法與查詢中的 first 方法,成功返回的是模。

  • 建立、插入成功返回的是建立插入的那條數據的模型。

  • first若是查不到數據,返回的是null,可用empty判斷。

  • 建立和插入,若是失敗,會報錯(當傳入的字段與數據庫對不上時)。

  • 若是傳入的字段與數據庫字段一致,插入或建立失敗會返回false

  • 判斷是否插入成功,用(! $result)判斷,(感嘆號和$result)間保留一個空格。判斷完成後纔可調用toArray。

4、更新與刪除

1. update和delete,destroy方法,返回的是影響行數。

在 laravel 中,update 方法永遠返回大於1的行數,由於 updated_at 字段老是會被更新。

若是要避免這種狀況,請在模型中關閉 laravel 的自動維護字段的屬性。

2. destory和delete返回的是影響行數,即失敗爲0,成功爲刪除行數。


相關文章:
Laravel 的一點經驗總結
深刻理解 Laravel Eloquent(三)——模型間關係(關聯)

相關文章
相關標籤/搜索