相信不少人在學習 Laravel 時,會對 ORM 返回的數據類型產生混淆,如返回集合,模或者整數類型,下面將對增刪改查操做進行一個小結。html
Laravel 的數據庫查詢構造器
提供了一個方便、流暢的接口,用來建立及運行數據庫查詢語句。它能用來執行應用程序中的大部分數據庫操做,且能在全部被支持的數據庫系統中使用。laravel
Laravel 的查詢構造器使用 PDO 參數綁定,來保護你的應用程序免受 SQL 注入的攻擊。在綁定傳入字符串前不須要清理它們。數據庫
1. 查詢中的 get
與 all
方法返回的是集合。學習
示例#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
判斷。
添加數據的 create、insert
方法與查詢中的 first
方法,成功返回的是模。
建立、插入成功返回的是建立插入的那條數據的模型。
first若是查不到數據,返回的是null,可用empty判斷。
建立和插入,若是失敗,會報錯(當傳入的字段與數據庫對不上時)。
若是傳入的字段與數據庫字段一致,插入或建立失敗會返回false
判斷是否插入成功,用(! $result)判斷,(感嘆號和$result)間保留一個空格。判斷完成後纔可調用toArray。
在 laravel 中,update 方法永遠返回大於1的行數,由於 updated_at 字段老是會被更新。
若是要避免這種狀況,請在模型中關閉 laravel 的自動維護字段的屬性。