1. 程式人生 > >thinkphp5.0常用sql

thinkphp5.0常用sql

int sel 顯示 cti select mail 顯示數據 core tis

原生寫法

引入 use/think/Db;

query 用於查詢 其他的用execute
插入記錄

$result = Db::execute(‘insert into sb_ad (ad_name, ad_content ,status) values (1, "456",1)‘);
dump($result);
更新記錄
$result = Db::execute(‘update sb_ad set ad_name = "framework" where ad_id = 1 ‘);
dump($result);
查詢數據
$result = Db::query(‘select * from sb_ad where ad_id = 1‘);
print_r($result);
刪除數據
$result = Db::execute(‘delete from sb_ad where ad_id = 2 ‘);
dump($result);
其它操作
顯示數據庫列表
$result = Db::query(‘show tables from tpshop1‘);
print_r($result);
清空數據表
$result = Db::execute(‘TRUNCATE table sb_ad‘);
dump($result);

$data = Db::name(‘user‘)->select();
$data = Db::name(‘user‘)->where(‘id‘,1)->find();
$data = Db::name(‘user‘)->where(‘id‘,1)->order(‘paixu‘,‘DESC‘)->limit(4)->select();

查詢: 這裏的where、order和limit方法就被稱之為鏈式操作方法
Db::table(‘think_user‘)->where(‘status‘,1)->order(‘create_time‘)->limit(10)->select();
查詢
Db::table(‘think_user‘) ->where(‘id‘,1) ->field(‘id,name,email‘)->find();
//刪除
Db::table(‘think_user‘) ->where(‘status‘,1) ->where(‘id‘,1) ->delete();

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


子查詢李找
1.
//打印SQL語句 當select方法的參數為false的時候,表示不進行查詢只是返回構建SQL
$subQuery2= Db::table(‘ssc_admin_user‘)
->field(‘id,name‘)
->where(‘id‘,‘>‘,10)
->select(false);
SELECT `id`,`name` FROM `ssc_admin_user` WHERE `id` > 10

2、使用fetchSql方法 打印SQL語句 fetchSql方法表示不進行查詢而只是返回構建的SQL語句,並且不僅僅支持select,而是支持所有的CURD查詢。


$subQuery = Db::table(‘think_user‘) ->field(‘id,name‘) ->where(‘id‘,‘>‘,10) ->fetchSql(true) ->select();
輸出 SELECT `id`,`name` FROM `think_user` WHERE `id` > 10


$subQuery = Db::table(‘think_user‘)->field(‘id,name‘)->where(‘id‘,‘>‘,10)->buildSql();
輸出 SELECT `id`,`name` FROM `think_user` WHERE `id` > 10

4、使用閉包構造子查詢
IN/NOT IN和EXISTS/NOT EXISTS之類的查詢可以直接使用閉包作為子查詢,例如:
Db::table(‘think_user‘)
->where(‘id‘,‘IN‘,function($query){
$query->table(‘think_profile‘)->where(‘status‘,1)->field(‘id‘);
})
->select();

生成的SQL語句是
SELECT * FROM `think_user` WHERE `id` IN ( SELECT `id` FROM `think_profile` WHERE `status` = 1 )

Db::table(‘think_user‘)
->where(function($query){
$query->table(‘think_profile‘)->where(‘status‘,1);
},‘exists‘)
->find();
生成的SQL語句為


SELECT * FROM `think_user` WHERE EXISTS ( SELECT * FROM `think_profile` WHERE `status` = 1 )

json用法


Db::table(‘think_artist‘)
->alias(‘a‘)
->join(‘think_work w‘,‘a.id = w.artist_id‘)
->join(‘think_card c‘,‘a.card_id = c.id‘)
->select();
表名也可以是一個子查詢
$subsql = Db::table(‘think_work‘)->where([‘status‘=>1])->field(‘artist_id,count(id) count‘)->group(‘artist_id‘)->buildSql();
Db::table(‘think_user‘)->alias(‘a‘)->join([$subsql=> ‘w‘], ‘a.artist_id = w.artist_id‘)->select();
因buildSql返回的語句帶有(),所以這裏不需要在兩端再加上()。


獲取某個字段或者某個列的值
// 獲取某個用戶的積分
User::where(‘id‘,10)->value(‘score‘);
// 獲取某個列的所有值
User::where(‘status‘,1)->column(‘name‘);
// 以id為索引
User::where(‘status‘,1)->column(‘name‘,‘id‘);
User::where(‘status‘,1)->column(‘id,name‘); // 同tp3的getField

thinkphp5.0常用sql