iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
自我挑戰組

後端新手PHP+Laravel筆記系列 第 25

[Day25] Query Builder查詢生產器

  • 分享至 

  • xImage
  •  

介紹

Laravel 的數據庫查詢構建器提供了一個方便、流暢的界面來創建和運行數據庫查詢。它可用於在您的應用程序中執行大多數數據庫操作,並適用於所有支持的數據庫系統。

Laravel 查詢構建器使用 PDO 參數綁定來保護您的應用程序免受 SQL 注入攻擊。無需清理作為綁定傳遞的字符串。


接續昨天,先在products的資料表新增了幾筆測試資料。

https://ithelp.ithome.com.tw/upload/images/20210923/20128999pbJqogtPIs.jpg

get all row

跟昨天一樣使用php artisan tinker來操作
在tinker中輸入DB::table('products')->get();他將會撈取所有products table的資料

>>> DB::table('products')->get()
=> Illuminate\Support\Collection {#3504
     all: [
       {#3499
         +"id": 1,
         +"code": "1",
         +"name": "iphone",
         +"price": 100,
         +"quantity": 100,
         +"created_at": null,
         +"updated_at": null,
       },
       {#3505
         +"id": 2,
         +"code": "2",
         +"name": "computer",
         +"price": 1000,
         +"quantity": 100,
         +"created_at": null,
         +"updated_at": null,
       },
       {#3503
         +"id": 3,
         +"code": "3",
         +"name": "gamecard",
         +"price": 50,
         +"quantity": 100,
         +"created_at": null,
         +"updated_at": null,
       },
       {#3502
         +"id": 4,
         +"code": "4",
         +"name": "EDIFIER",
         +"price": 10000,
         +"quantity": 100,
         +"created_at": null,
         +"updated_at": null,
       },
     ],
   }

where

可以來尋找價錢是1000元的商品名稱:

>>> DB::table('products')->where('price', '=',1000)->value('name');
=> "computer"

pluck

可以使用該pluck方法,將會返回自訂義鍵值:

>>> DB::table('products')->pluck('name','id')
=> Illuminate\Support\Collection {#3523
     all: [
       1 => "iphone",
       2 => "computer",
       3 => "gamecard",
       4 => "EDIFIER",
     ],
   }
>>>

Aggregates

找到商品數量:

>>> DB::table('products')->count();
=> 4

找到價格最貴商品:

>>> DB::table('products')->max('price');
=> 10000

select

如果不希望查詢到的是所有的列,那就可以使用select語句,自訂義回傳欄位

查詢所有商品及價格:

>>> DB::table('products')->select('name', 'quantity')->get();
=> Illuminate\Support\Collection {#3520
     all: [
       {#3522
         +"name": "iphone",
         +"quantity": 100,
       },
       {#3512
         +"name": "computer",
         +"quantity": 100,
       },
       {#3525
         +"name": "gamecard",
         +"quantity": 100,
       },
       {#3518
         +"name": "EDIFIER",
         +"quantity": 100,
       },
     ],
   }

先在資料庫加上一筆商品名稱重複資料
https://ithelp.ithome.com.tw/upload/images/20210923/20128999uClyF5vILe.jpg
找到不重複的商品名稱:

>>> $users = DB::table('products')->select('name')->distinct()->get();
=> Illuminate\Support\Collection {#3510
     all: [
       {#3489
         +"name": "iphone",
       },
       {#3511
         +"name": "computer",
       },
       {#3507
         +"name": "gamecard",
       },
       {#3515
         +"name": "EDIFIER",
       },
     ],
   }
>>>

明天來寫Query Builder CRUD


上一篇
[Day24]創建Table及撈取資料
下一篇
[Day26] Query Builder CRUD 前置設定
系列文
後端新手PHP+Laravel筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言