首頁 > php框架 > ThinkPHP > 主體

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

青灯夜游
發布: 2022-09-23 19:28:36
轉載
1375 人瀏覽過

一個標準的網站一定離不開資料庫的操作,在本套課程中我和你一起來揭開ThinkPHP5 資料操作的神秘面紗,和你一起愉快的使用ThinkPHP5 操作資料庫,讓資料庫操作變的更愉悅。

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

基本上使用

#查詢操作

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','<&#39;,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框架

#

以上是聊聊Thinkphp 5.0 對資料庫的操作(關鍵程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!