thinkphp5.0常用sql
Posted 渐行渐远见陌生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp5.0常用sql相关的知识,希望对你有一定的参考价值。
原生写法
引入 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的主要内容,如果未能解决你的问题,请参考以下文章
ThinkPHP5.0中Request请求对象的使用和常用的操作