本文執行個體講述了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);
}
}
複制
顯示的結果如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICMyYTMvw1dvwlMvwlM3VWaWV2Zh1Wa-cmbw5ybzgTdxUDaycWevwVM0MDN0gTMtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
重新排序
代碼如下:
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);
}
}
複制
結果如下:
資料表如下:
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);
}
}
複制
結果如下:
插入多條資料
代碼如下:
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);
}
}
複制
結果如下:
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程式設計有所幫助。