天天看點

Laravel架構查詢構造器常見用法總結

本文執行個體講述了Laravel架構查詢構造器常見用法。分享給大家供大家參考,具體如下:

查詢構造器也是我們使用laravel架構的一項必備技能,上一篇文章我們講到了如何使用原生增删改查,這一篇我們就來講查詢構造器的增删改查(以下知識點若有不全面的地方,還請多多諒解)

查詢構造器簡介:

Laravel查詢構造器提供友善流暢的接口,用來建立及執行資料庫查找文法

使用PDO參數綁定,以保護應用程式免于SQL注入是以傳入的參數不需要額外轉移特殊字元

基本可以滿足所有資料庫操作,而且在所有支援的資料庫系統上都可以執行

NO.1查詢構造器新增資料

1.最基本的新增

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur1()
 {
 $bool = DB::table('student')//table指的是一個資料表,而括号裡的('student')則指的是一個名為student的資料表
 - insert(
  ['name' =  'Rarin','age' = 16]
 );
 echo "<pre ";
 print_r($bool);
 echo "</pre ";
 }
}           

複制

ok,然後他會傳回一個數字“1”,傳回數字“1”則證明他已經建立了一條資料。

2.擷取一個新增的資料id

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur1()
 {
 $bool = DB::table('student')
 - insertGetId(
  ['name'= 'Shen' , 'age'= '16']
 );
 echo "<pre ";
 print_r($bool);
 echo "</pre ";
 }
}           

複制

然後他會彈出相對應的id值,我的id值是2,是以他會顯示一個數字“2”。

3.新增多條資料

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur1()
 {
 $bool = DB::table('student')
 - insert([
  ['name'= 'Chen','age'= 18],
  ['name'= 'He','age'= 16]
 ]);
 var_dump($bool);
 }
}           

複制

為了和上面的區分一下,我把print_r換成了var_dump,他會輸出成一個true,證明新增成功了。

NO.2查詢構造器修改資料

1.修改一條資料

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur2()
 {
 $upt = DB::table('student')
 - where('id',3)
 - update(['age'= 20]);
 echo "<pre ";
 print_r($upt);
 echo "</pre ";
 }
}           

複制

那麼,他會輸出一個數字1,代表的是影響的行數是一行。

2.自增某條資料

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur2()
 {
 $upt = DB::table('student')
 - increment('age');
 echo "<pre ";
 print_r($upt);
 echo "</pre ";
 }
}           

複制

結果,他會輸出為4,因為我一共有四行資料,是以他影響到了四行資料,自增了1(在這裡要說明一下,沒有給他指派的時候他預設值為1)

那麼我們又要如何給他附上值呢?代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur2()
 {
 $upt = DB::table('student')
 - increment('age',2);//在這裡,我們指定他自增的值為2
 echo "<pre ";
 print_r($upt);
 echo "</pre ";
 }
}           

複制

那麼,他輸出的值照樣是4,證明影響了四個行數,然後去檢視的時候,可以發現每個資料的年齡都大了2歲

3.自減某條資料

自減的預設值和設定值的操作步驟與自增一緻,唯一不同的就是關鍵字從increment轉換成了decrement。

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur2()
 {
 $upt = DB::table('student')
 - decrement('age');
 echo "<pre ";
 print_r($upt);
 echo "</pre ";
 }
}           

複制

然後他會傳回一個受影響行數的值,我這裡有四個行數受到了影響,是以傳回4

4.根據某個條件進行自增(自減同理)

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur2()
 {
 $upt = DB::table('student')
 - where('id',1)
 - increment('age');
 echo "<pre ";
 print_r($upt);
 echo "</pre ";
 }
}           

複制

因為受影響的資料隻有id是為1的資料,是以他會傳回數字1,證明受影響的行數隻有一行,自減同理,不過多介紹

自減的時候修改其他字段(自增同理)

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur2()
 {
 $upt = DB::table('student')
 - where('id',3)
 - decrement('age',3,['name' =  'ChenChai']);
 echo "<pre ";
 print_r($upt);
 echo "</pre ";
 }
}           

複制

他會傳回一個受影響的行數值

NO.3查詢構造器删除資料

1.删除某條資料

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur3()
 {
 $dlt = DB::table('student')
 - where('id',4)//當id為4的時候
 - delete();
 echo "<pre ";
 print_r($dlt);
 echo "</pre ";
 }
}           

複制

他會傳回一個數字1,表示删除的資料共有1行。

2.根據某個值删除多條資料

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur3()
 {
 $dlt = DB::table('student')
 - where('id',' =',2)//當id大于等于2的時候
 - delete();
 echo "<pre ";
 print_r($dlt);
 echo "</pre ";
 }
}           

複制

他會輸出相對應被删除幾條資料的數字,我這裡删除了2條資料,是以他傳回一個2

NO.4查詢構造器查詢資料

1.get方式擷取所有的資料

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur4()
 {
 $slt = DB::table('student')
 - get();
 dd($slt);
 }
}           

複制

2.first方式

擷取第一條資料

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur4()
 {
 $slt = DB::table('student')
 - first();
 dd($slt);
 }
}           

複制

顯示的結果如下:

Laravel架構查詢構造器常見用法總結

重新排序

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur4()
 {
 $slt = DB::table('student')
 - orderBy('id','desc')
 - first();
 dd($slt);
 }
}           

複制

結果如下:

Laravel架構查詢構造器常見用法總結

資料表如下:

Laravel架構查詢構造器常見用法總結

3.where方式

插入一條資料

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur4()
 {
 $slt = DB::table('student')
 - where('id',' ',1)//當id大于1的時候
 - get();
 dd($slt);
 }
}           

複制

結果如下:

Laravel架構查詢構造器常見用法總結

插入多條資料

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur4()
 {
 $slt = DB::table('student')
 - whereRaw('id   ? and age = ?',[1,19])//當id大于1的時候,并且age等于191的時候
 - get();
 dd($slt);
 }
}           

複制

4.pluck方式

他隻傳回某個值,以數組的形式

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur4()
 {
 $slt = DB::table('student')
 - pluck('name');
 dd($slt);
 }
}           

複制

結果如下:

Laravel架構查詢構造器常見用法總結

5.lists方式

作用和pluck方式差不多,但唯一不同的就是,他可以指定傳回的下标是多少

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur4()
 {
 $slt = DB::table('student')
 - lists('name','id');//指定傳回的下标是和name相對應的id
 dd($slt);
 }
}           

複制

6.select方式

你可以用它指定輸出相對應的值,而不會像get方式一樣把所有無關緊要的值也輸出出來

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur4()
 {
 $slt = DB::table('student')
 - select('name','id','age')
 - get();
 dd($slt);
 }
}           

複制

結果不做多介紹,隻要簡單的了解為指定查找即可

7.chunk方式

這個一般是用在資料過多的時候,為了流暢,設定每次輸出多少條資料

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur4()
 {
 DB::table('student')
 - chunk(1,function($slt){
  echo "<pre ";
  print_r($slt);
  echo "</pre ";
 });
 }
}           

複制

如果你隻需要查詢一次,隻需要添加一個return false即可。

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur4()
 {
 DB::table('student')
 - chunk(1,function($slt){
  echo "<pre ";
  print_r($slt);
  echo "</pre ";
  return false;
 });
 }
}           

複制

但是一般這種情況都是你滿足了某個條件後就不再執行,是以我們往匿名函數裡增加一個if判斷語句來判斷再return即可

NO.5查詢構造器聚合函數

1.count函數

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur5()
 {
 $num = DB::table('student')
 - count();
 print_r($num);
 }
}           

複制

他這個函數是輸出資料有幾條記錄,我這裡資料有2條記錄,是以他會輸出一個2

2.max函數

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur5()
 {
 $num = DB::table('student')
 - max('age');
 print_r($num);
 }
}           

複制

傳回資料裡某個資料的最大值

3.min函數

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur5()
 {
 $num = DB::table('student')
 - min('age');
 print_r($num);
 }
}           

複制

與max同理

4.avg函數

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur5()
 {
 $num = DB::table('student')
 - avg('age');
 print_r($num);
 }
}           

複制

傳回年齡的平均值

5.sum函數

代碼如下:

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class SController extends Controller
{
 public function qur5()
 {
 $num = DB::table('student')
 - sum('age');
 print_r($num);
 }
}           

複制

傳回資料裡某個資料的總和

更多關于Laravel相關内容感興趣的讀者可檢視本站專題:《Laravel架構入門與進階教程》、《php優秀開發架構總結》、《php面向對象程式設計入門教程》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧彙總》

希望本文所述對大家基于Laravel架構的PHP程式設計有所幫助。