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请求对象的使用和常用的操作

ThinkPHP5.0中Redis的使用和封装

ThinkPHP5 助手函数

ThinkPHP5.0中的build.php自动生成所需的目录结构的详细方法

ThinkPHP5.0.x SQL注⼊

关于ThinkPHP5.0的渲染模板输出