翼度科技»论坛 编程开发 PHP 查看内容

ThinkPHP6.0 链式SQL语句

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
ThinkPHP6.0        链式SQL语句

查询单个数据
  1. $user = Db::query('select * from `user`');
  2. $user=Db::table('user')->where('UserID',1001)->find();//查询结果为空 返回 null
  3. $user=Db::table('user')->where('UserID',1001)->findOrEmpty();//查询结果为空 返回 空数组
复制代码
查询结果集(查询结果返回多条数据的意思)

  1. $user=Db::table('user')->where('UserID',1001)->select();
  2. $user=Db::table('user')->where('UserID', 1001)->select()->toArray();
复制代码
查询一个字段

  1. $user=Db::table('user')->where('UserID',1002)->value('UserName');//只能返回一条数据
复制代码
查询一列
  1.         $user=Db::table('user')->where('Password',123456)->column('UserName');//可以返回多条数据
复制代码
添加数据
  1.         $data=['UserID'=>'1005','UserName'=>'Season','Password'=>'123456'];
  2.         Db::name('user')->insert($data);
复制代码
修改数据
  1.         DB::table('user')->where('UserID',1005)->update(['Password'=>123]);
复制代码
删除数据

根据主键删除

  1. Db::table('user')->delete([1002,1003]);
复制代码
条件删除

  1.     Db::table('user')->where('Password',123)->delete();
复制代码
查询数据

格式  where('字段名','查询表达式','查询条件');
  1.             $user=Db::table('user')->where("UserID","=",1001)->select();
复制代码
模糊查询
  1.         $user=Db::table('user')->where('UserName','like','s%')->select();
复制代码
区间查询
  1.         $user=Db::table('user')->where('UserID','between','1001,1003')->select();
复制代码
IN查询
  1.         $user=Db::table('user')->where('UserID','in',[1001,1003])->select();
复制代码
Not Null
  1.         $user=Db::table('user')->where('Password','not null')->select();
复制代码
Null
  1.         $user=Db::table('user')->where('Password',null)->select();
复制代码
链式操作示例
  1.         $user=Db::table('user')->where('Password',123456)->order('UserName')->select();
复制代码
field操作(输出选择的字段名的数据)
  1.         $user=Db::table('user')->field('UserID,UserName')->select();
复制代码
链式alias操作,设置表的名称(为了方便后面内容的书写)
  1.         $user=Db::table('user')->alias('a')->where('a.UserID',1001)->select();
复制代码
limit 操作
  1.         $user=Db::table('user')->limit(2)->select();
复制代码
page操作
  1.         $user=Db::table('user')->page(2,5)->select();
复制代码
order操作,默认asc
  1.         $user=Db::table('user')->order('UserID')->select();
  2.         $user=Db::table('user')->order('UserID','desc')->select();
复制代码
group 操作
  1.         $user=Db::table('user')->alias('u')->field('u.Status,SUM(u.Price)')->group('u.Status')->select();
复制代码
having操作
  1. $user=Db::table('user')->alias('u')->field('u.Status,SUM(u.Price)')->group('u.Status')->having('u.Status>0')->select();
复制代码
join操作

​                                                INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行
​                                                LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  1.                                      RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  2.                                        FULL JOIN: 只要其中一个表中存在匹配,就返回行
复制代码
Transaction(自动):当函数内的sql语句出现错误了,则函数内的sql语句都不执行
  1. Db::Transaction(function (){
  2.     Db::name('user')->where('UserID',1001)->save(['Price'=>Db::raw('Price-3')]);
  3.     Db::name('user')->where('UserID',1002)->save(['Price'=>Db::raw('Price+3')]);
  4. });
复制代码
startTrans(手动):当sql语句出现错误了,则sql语句都不执行
  1. Db::startTrans();
  2. try {
  3.     Db::name('user')->where('UserID',1001)->save(['Price'=>Db::raw('Price-3')]);
  4.     Db::name('user')->where('UserID',1002)->save(['Price'=>Db::raw('Price+3')]);
  5.     Db::commit();//提交事务
  6. }catch (\Exception $e){
  7.     echo '执行SQL失败,开始回滚数据';
  8.     Db::rollback();
  9. }
复制代码
获取器:$value 所有字段名是“UserName”的数据        $data所有数据
  1. $user=Db::name('user')->withAttr('UserName',function ($value,$data){
  2.     var_dump($value);
  3.     var_dump($data);
  4. })->select();;
复制代码
来源:https://www.cnblogs.com/SJGJ/p/17519481.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具