laravel基礎課程---13、數據庫基本操作2(lavarel數據庫操作和tp對比)
一、總結
一句話總結:
非常非常接近:也是分為兩大類,原生SQL 和 數據庫鏈式操作
學習方法:使用時 多看手冊即可 ,【和tp的區別不大,功能增加了很多,文檔更加完善】
1、數據最基礎的鏈式操作?
注意這里找表是table方法:\DB::table("user")->where("id",'=',3)->first();
2、lavarel數據庫操作中如何獲取某列的值?
$titles = DB::table('roles')->pluck('title');
若你想要獲取一個包含單個字段值的數組,你可以使用 pluck
方法。在這個例子中,我們將取出 roles 數據表 title 字段的數組:
$titles = DB::table('roles')->pluck('title'); foreach ($titles as $title) { echo $title; }
你也可以在返回的數組中指定自定義的鍵值字段:
$roles = DB::table('roles')->pluck('title', 'name'); foreach ($roles as $name => $title) { echo $title; }
3、lavarel數據庫操作中如何從數據表中獲取單個列或行?
value方法獲取單個字段:$email = DB::table('users')->where('name', 'John')->value('email');
first方法獲取單行數據:$user = DB::table('users')->where('name', 'John')->first();
若你只需從數據表中取出單行數據,則可以使用 first
方法。這個方法會返回單個 StdClass
對象:
$user = DB::table('users')->where('name', 'John')->first(); echo $user->name;
若你不想取出完整的一行,則可以使用 value
方法來從單條記錄中取出單個值。這個方法會直接返回字段的值:
$email = DB::table('users')->where('name', 'John')->value('email');
4、lavarel數據庫操作中如何 取出 id為1的一條數據?
find(1):發現ID是1的數據
5、lavarel數據庫操作中如何 操作數千條數據庫記錄(結果分塊)及實例?
使用 chunk 方法。這個方法一次只取出一小「塊」結果,並會將每個區塊傳給一個閉包進行處理:
分塊實例:比如每次處理 100 條記錄:DB::table('users')->orderBy('id')->chunk(100, function($users) {
若你需要操作數千條數據庫記錄,則可考慮使用 chunk
方法。這個方法一次只取出一小「塊」結果,並會將每個區塊傳給一個閉包
進行處理。這個方法對於要編寫處理數千條記錄的 Artisan 命令 非常有用。例如,讓我們將整個 users
數據表進行分塊,每次處理 100 條記錄:
DB::table('users')->orderBy('id')->chunk(100, function($users) { foreach ($users as $user) { // } });
你可以從閉包
中返回 false
,以停止對后續分塊的處理:
DB::table('users')->orderBy('id')->chunk(100, function($users) { // Process the records... return false; });
6、lavarel數據庫操作中如何 取某個字段兩個之間的值?
where+數組條件:\DB::table("user")->where([['id','>=',2],['id','<=',5]])->get();
whereBetween:$data=\DB::table("User")->whereBetween('id',[10,15])->get();
7、lavarel數據庫操作中如何 判斷字段是否為空?
whereNull方法+get方法:$data=\DB::table("User")->whereNull("pass")->get();
whereNull 和 whereNotNull $data=\DB::table("User")->whereNull("pass")->get(); $data=\DB::table("User")->whereNotNull("pass")->get();
8、lavarel數據庫操作中如何 判斷字段是否在某個數組中?
whereIn方法:$data=\DB::table("User")->whereIn("id",[2,5,12,15])->get();
whereIn 和 whereNotIn $data=\DB::table("User")->whereIn("id",[2,5,12,15])->get(); $data=\DB::table("User")->whereNotIn("id",[2,5,12,15])->get();
9、lavarel數據庫操作中如何 獲取某個表所有數據?
get方法:$users = DB::table('users')->get();
public function index() { $users = DB::table('users')->get(); return view('user.index', ['users' => $users]); }
10、lavarel數據庫操作中如何 使用mysql原生函數?
DB:raw方法:表達式會被當作字符串注入到查找:DB::table("User")->select(DB::raw("count(*) tot"))->first();
11、lavarel數據庫操作中如何 查詢特定字段?
select方法:有點相當於tp的field字段:->select('users.*', 'contacts.phone', 'orders.price')
$users = DB::table('users') ->join('contacts', 'users.id', '=', 'contacts.user_id') ->join('orders', 'users.id', '=', 'orders.user_id') ->select('users.*', 'contacts.phone', 'orders.price') ->get();
12、lavarel數據庫操作中如何 從數據庫 指定偏移處截取多少個?
offset方法:表示偏移
limit方法:表示截取幾個
13、lavarel數據庫刪除操作中 where條件和update的位置關系 ?
where要放在update前面,不然可能出錯
DB::table('users') ->where('id', 1) ->update(['votes' => 1]);
二、內容在總結中