博主信息
博文 7
粉丝 0
评论 0
访问量 6182
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
数据库原生查询与查询构造器--5.23作业
弓长木子的博客
原创
877人浏览过

10个常用的查询构造器

关键点:所有的读操作,返回的都是一个二维数组,在使用的时候需要foreach遍历,失败则返回空数组;写操作返回受到影响的条目数,失败返回0;不推荐在最终查询命令中传参,最好将各种查询条件在查询构造器中分解,最终查询命令只进行查询不分担条件

实例
<?php
namespace app\index\controller;
use think\Db;

class query{
        
        public function find(){
            //1.table()  指定要查询的表名,name()可以达成同样目的且可以自动过滤表名前缀,但在database.php配置中表前缀prefix设置为空,因此只用table()就可以达到要求
            //2.find()  查询满足条件的数据,但只返回第一条
            $res = Db::table('staff')->find(4);//如果以主键为查询条件,可以直接在find中传参
            dump($res);

            //3.查询条件可以在where命令中填写,避免在最后的find命令中传参
            //where(字段名,表达式,查询条件)是where的基本结构,其中表达式如果是相等,则可以省略
            $res = Db::table('staff')
            ->where('staff_id','=','4')
            ->find();
            dump($res);

            //4.查询指定的字段使用field(),field参数可以是字符串,也可以是数组,使用数组的好处是可以另行指定字段的别名便于区分,相当于SQL语句中的as
            $res = Db::table('staff')
            //->field('name,sex,salary')//字符串
            //->field(['name','sex','salary'])//索引数组
            ->field(['name'=>'姓名','sex'=>'性别','salary'=>'工资'])//关联数组
            ->where('staff_id','4')
            ->find();
            dump($res);
        }

        public function select(){

            //5.查询满足条件的多条记录用select()
            //6.order实现排序,desc降序,asc升序
            //7.limit限制显示的条数
            $res = Db::table('staff')
            ->field(['name'=>'姓名','salary'=>'工资'])
            ->where('salary','>','3000')
            ->order('salary','desc')
            ->limit(3)
            ->select();
            dump($res);
 
        }

        public function insert(){

            //8.插入一条数据insert()
            $data = [
			    'name' => '胡二刀',
			    'sex' => 0,
			    'age' => 49,
			    'salary' => 5300
		    ];
	    $num = Db::table('staff')->insert($data);
            //insert插入成功后直接获取id的getLastInsID二合一操作命令insertgetId替换insert
	    //$num = Db::table('staff')->insertgetId($data);
	    //返回上一条执行成功语句的id
	    $id = Db::getLastInsID();
	    return $id?'插入成功,id='.$id :'插入失败';


	    //插入多条数据insertAll
	    $data = [
			['name' => '张飞','sex' => 0,'age' => 48,'salary' => 6900],
    			['name' => '刘备','sex' => 0,'age' => 58,'salary' => 4500],
    			['name' => '关羽','sex' => 0,'age' => 53,'salary' => 4700],
		    ];
            $num = Db::table('staff')->insertAll($data);
            return $num?'插入成功'.$num.'条数据' :'插入失败';

            //为避免在最终方法中传参,使用data()方法打包数据
            $num = Db::table('staff')->data($data)->insertAll();
            return $num?'插入成功'.$num.'条数据' :'插入失败';
        }

        public function update(){

            //9.更新操作update,必须基于前置查询操作,模板不允许无条件更新
            $num = Db::table('staff')
            ->where('salary','<=','5000')
            //用字符串描述表达式,用到了salary的原始值,引用Db::raw()方法
            ->data(['salary'=>Db::raw('salary+1000')])
            ->update();

            //直接根据主键更新
            $num = Db::table('staff')->update(['sex'=>1,'staff_id'=>13]);
            return $num ? $num.'条数据被更新':'更新失败';
        }

        public function delete(){

            //10.删除操作delete(),一般不直接使用删除操作,而是软删除,即用update更新操作代替delete操作,毕竟用户数据非常难得
            //删除操作同样基于前置查询,不允许无条件删除
            $num = Db::table('staff')->delete(19);
            //多个主键同时传入
            $num = Db::table('staff')->delete([1,3,5]);

            $num = Db::table('staff')->where('salary','>','7000')->delete();

            //删除表的全部数据
            //$num = Db::table('staff')->delete(true);

        }

}
?>
运行实例 »
点击 "运行实例" 按钮查看在线实例


批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学