• ThinkPHP中常用总结一CURD操作


    一丶CURD常用操作
    注意:
    在视图内输出数据的时候尽量使用self属性,这样会让你的网页更快,更迅速
    self::$data['list'] = $list;
    模板输出变量 $this->assign('重定义名',self::$data);
    输出模板 $this->display('视图');
    大多数组合查询select()条件都在最后
    读取数据的时候尽量使用遍历数组的形式不要使用遍历对象的方式。大多数情况下,数组比对象运行的快。也更好的操作
    1.常用查询类
    实例化thinkPHP的model
    $user = new Model('模型名','表前缀','数据库连接信息');
    //$user = new Model('User');对应的新建一个model命名为(UserModel.class.php);里面声明操作那张表
    <1.获取全部数据
    $user->select();//相当于select * from user;
    <2.查询指定字段
    $user->field('username,password')->select();
    <3.使用查询条件
    $where['username'] = 'gaofei';
    $user->where($where)->select();//也可使用$user->where('UId=1 AND username=12321')->select();
    <4.排序
    $user->order('UId DESC')->select();
    <5.limit限制
    $user->limit(4,5)->select();
      <6.连贯操作
        $user->field('username,password')->where('UId != 1')->order('UId ASC')->limit(3,5)->select();
    2.find方法 查询一条数据记录
    <1.find() 方法是和 select() 用法类似的一个方法,不同之处 find() 查询出来的始终只有一条数据,即系统自动加上了 LIMIT 1 限制。
    $where['user'] = 'gf';
    $where['password'] = md5(123);
    $user->where($where)->find();
    3.getBy动态查询 ThinkPHP getBy动态查询是一个魔术方法,可以根据某个字段名称动态得到对应的一条数据记录。
    $user->getByusername('gf');//执行的sql为 SELECT * FROM tb_name WHERE username='gf';
    4.统计查询
    <1.在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数、所有用户的最大积分、学生的平均成绩等等,ThinkPHP 为这些统计操作提供了一系列的内置方法:
    $user->where('UId=1')->count();//SELECT COUNT(*) FROM TB_NAME WHERE UId='1';
    <2.max() 方法用于统计某个字段最大数据。
    $user->max('username');//SELECT MAX(username) AS tb_max FROM TB_NAME;
    <3.avg() 统计某个字段平均数据。
    $user->avg('score');//SELECT AVG(score) FROM TB_NAME LIMIT 1;
    <4.sum()统计某字段数据之和
    $user->order('score DESC')->limit(10)->sum('score');//SELECT SUM(SCORE) AS tb_sum FROM tb_name ORDER BY score DESC LIMIT 10;
    5.原生sql查询
    <1.query():用于 SQL 查询操作,并返回符合查询条件的数据集
    $sql = 'SELECT * FROM tb_name';
    $user->query($sql);
    <2.execute():更新和写入数据的 SQL 操作,返回影响的记录数
    $sql = "UPDATE tb_name SET email='',password='' WHERE UId='123'";
    $user->execute($sql);
    二丶联合查询
    think中关于多表查询,原生sql用的较多。
    1.原生查询。
    $sql = "SELECT * FROM tb1 inner join tb2 on tb1.userid=tb2.userid";
    $user->query($sql);
    2.join()两表查询
    $user->join('t1 ON artist.id = t1.artist_id')->join('t2 ON artist.card_id = t2.id')->select();
    3.table()多表查询
    $user->field('user.name,role.title')->table(array('think_user'=>'user','think_role'=>'role'))->limit(10)->select();
    三丶写入数据
    1.add() 方法用于向数据表添加数据,相当于 SQL 中的 INSERT INTO 行为。返回受影响ID
    $addArr = array(
    'username' => 'gf',
    'password' => '123',
    'email' => 'heheheh'
    );
    $id = $user->add($addArr);
    //执行语句INSERT INTO tb_name (username,password,email) VALUES('gf','123','hehehe');
    四丶更新数据
    1.save 方法用于向数据表更新数据,相当于 SQL 中的 UPDATE 行为。
    $where['id'] = '1';
    $data['username'] = 'gaofei';
    $user->where($where)->save($data);//或者$user->where($where)->data($data)->save();
    //执行语句
    UPDATE tb_name SET username = 'gaofei' WHERE id=1;
    五丶删除数据
    1.delete() 方法来删除数据库中的数据记录,并且也支持连贯操作的使用。delete() 方法执行成功返回操作影响(删除)的记录数。
    $where['Uid] = 1;
    $user->where($where)->delete();
    //DELETE FROM tb_name WHERE UId=1;
    2.连贯操作删除多个
    $user->where('uId=1')->order('uId DSC')->limit(5)->delete();
    按照uid升序排序,删除uid为1的五条
    上面这样暂时就能解决我们平常基本的添删改查了。
  • 相关阅读:
    LOJ 10160
    LOJ 10155
    2018-11-1 NOIP 模拟赛解题报告
    联考前停课集训随笔
    一个博客园代码高亮的方案
    详解使用 Tarjan 求 LCA 问题(图解)
    NOIP2018普及初赛解析
    关于CCR测评器的自定义校验器(Special Judge)
    日常,异常处理
    Androidstudio 编译慢 这样的体验肯定很多人都有!!!
  • 原文地址:https://www.cnblogs.com/g825482785/p/curd.html
Copyright © 2020-2023  润新知