聊聊Thinkphp 5.0 對資料庫的操作(關鍵程式碼)

2022-09-23 22:01:05
一個標準的網站一定離不開資料庫的操作,在本套課程中我和你一起來揭開ThinkPHP5 資料操作的神祕面紗,和你一起愉快的使用 ThinkPHP5 運算元據庫,讓資料庫操作變的更愉悅。

php入門到就業線上直播課:進入學習
API 檔案、設計、偵錯、自動化測試一體化共同作業工具:

基本使用

查詢操作

Db::query('select * from think_user where id=?',[8]);

寫入操作

Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);

查詢構造器

查詢資料

find 返回一條記錄,返回的結果是一個一維陣列 如果結果不存在,返回NULL

Db::table('think_user')->where('id',1)->find();

select 返回所有記錄,返回的結果是一個二維陣列 如果結果不存在,返回一個空陣列

Db::table('think_user')->where('status',1)->select();

助手函數

系統提供了一個db助手函數,可以更方便的查詢:

db('user')->where('id',1)->find();
db('user')->where('status',1)->select();

注意:使用db助手函數預設每次都會重新連線資料庫,而使用Db::name或者Db::table方法的話都是單例的。db函數如果需要採用相同的連結,可以傳入第三個引數,例如

db('user',[],false)->where('id',1)->find();
db('user',[],false)->where('status',1)->select();

新增資料

使用 Db 類的 insert 方法向資料庫提交資料

$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::table('think_user')->insert($data);

新增多條資料

新增多條資料直接向 Db 類的 insertAll 方法傳入需要新增的資料即可

$data = [    ['foo' => 'bar', 'bar' => 'foo'],
    ['foo' => 'bar1', 'bar' => 'foo1'],
    ['foo' => 'bar2', 'bar' => 'foo2']
];
Db::name('user')->insertAll($data);

insertAll 方法新增資料成功返回新增成功的條數

助手函數

// 新增單條資料
db('user')->insert($data);

// 新增多條資料
db('user')->insertAll($list);

更新資料

update 方法返回影響資料的條數,沒修改任何資料返回 0

Db::table('think_user')->where('id', 1)->update(['name' => 'thinkphp']);

更新某個欄位的值: setField 方法返回影響資料的條數,沒修改任何資料欄位返回 0

Db::table('think_user')->where('id',1)->setField('name', 'thinkphp');
自增或自減一個欄位的值
// score 欄位加 1
Db::table('think_user')->where('id', 1)->setInc('score');
// score 欄位加 5
Db::table('think_user')->where('id', 1)->setInc('score', 5);
// score 欄位減 1
Db::table('think_user')->where('id', 1)->setDec('score');
// score 欄位減 5
Db::table('think_user')->where('id', 1)->setDec('score', 5);

延遲更新

Db::table('think_user')->where('id', 1)->setInc('score', 1, 10);

刪除資料

// 根據主鍵刪除
Db::table('think_user')->delete(1);
Db::table('think_user')->delete([1,2,3]);

// 條件刪除    
Db::table('think_user')->where('id',1)->delete();
Db::table('think_user')->where('id','<',10)->delete();

條件查詢方法

where

可以使用where方法進行AND條件查詢:

Db::table('think_user')
    ->where('name','like','%thinkphp')
    ->where('status',1)
    ->find();

whereOr方法

Db::table('think_user')
    ->where('name','like','%thinkphp')
    ->whereOr('title','like','%thinkphp')
    ->find();

混合查詢

where方法和whereOr方法在複雜的查詢條件中經常需要配合一起混合使用,下面舉個例子:

$result = Db::table('think_user')->where(function ($query) {
    $query->where('id', 1)->whereor('id', 2);
})->whereOr(function ($query) {
    $query->where('name', 'like', 'think')->whereOr('name', 'like', 'thinkphp');
})->select();

查詢表示式

查詢表示式支援大部分的SQL查詢語法,也是ThinkPHP查詢語言的精髓,查詢表示式的使用格式:

where('欄位名','表示式','查詢條件');
whereOr('欄位名','表示式','查詢條件');
表示式 含義
EQ、= 等於(=)
NEQ、<> 不等於(<>)
GT、> 大於(>)
EGT、>= 大於等於(>=)
LT、< 小於(<)
ELT、<= 小於等於(<=)
LIKE 模糊查詢
[NOT] BETWEEN (不在)區間查詢
[NOT] IN (不在)IN 查詢
[NOT] NULL 查詢欄位是否(不)是NULL
[NOT] EXISTS EXISTS查詢
EXP 表示式查詢,支援SQL語法
> time 時間比較
< time 時間比較
between time 時間比較
notbetween time 時間比較

【相關教學推薦:】

以上就是聊聊Thinkphp 5.0 對資料庫的操作(關鍵程式碼)的詳細內容,更多請關注TW511.COM其它相關文章!