TP5的查询构造器

1、查询构造器的工作原理?

在\think\db文件夹下,有Builder.php生成类、Connection.php连接器类和Query.php查询类,它们里面就有各种方法。
生成类是一个抽象类,所以不能被实例化。

2、什么是链式操作?为什么要用链式操作?

链式操作中的方法来自query.php查询类

链式操作原理

在index.php中:

<?php
namespace app\index\controller;
use think\Db;
class Index
{
  public function index()
  {
    dump(
      Db::table('staff') //链式操作,返回表名为staff的对象
      ->field(['name','salary']) //链式操作,返回上一个对象中只保留name和salary字段后的对象
      ->where('id',1006) //链式操作,返回上一个对象中只保留id为1006记录的对象
      ->find() //终极操作,将上一个对象返回并显示
    );
  }
}
?>

3、数据表的查询条件是如何生成的?

查询条件生成原理

在index.php文件中:

<?php
namespace app\index\controller;
use think\Db;
class Index
{
  public function index()
  {
/***************字符串查询方式***************/
    dump(
      Db::table('staff') 
      ->field(['name','salary']) 
      ->where('salary','>',3000)
      ->select()
    );
/***************数组查询方式***************/
    dump(
      Db::table('staff') 
      ->field(['name','salary']) 
      ->where([
           'id'=>['>',1003],
           'salary'=>['>',3000]
        ])
      ->select()
    );
/***************闭包查询方式***************/
    dump(
      Db::table('staff') 
      ->field(['name','salary']) 
      ->where(function($query){
           $query->where('id','>',1003)
                 ->where('salary','>',3000) //如果这里的3000不想写死,想从外部传进,往下看……
        })
      ->select()
    );
/***************如果不想写死,如下:***************/
    $salary = 3000;
    dump(
      Db::table('staff') 
      ->field(['name','salary']) 
      ->where(function($query) use ($salary){
           $query->where('id','>',1003)
                 ->where('salary','>',$salary) 
        })
      ->select()
    );
/*******************再次简化如下******************/
    $salary = 4000;
    dump(
      Db::select(
        function($query) use ($salary){
          $query->table('staff')
          ->field(['name'=>'姓名','salary'=>'工资'])
          ->where([
              'id'=>['>',1003],
              'salary'=>['>',$salary]
             ]);
        })
     );
  }
}
?>

4、如何用查询构造器实现数据表的增删改查(CURD)操作?

CURD操作
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,224评论 19 139
  • greenDAO是一款优秀的对象关系映射(ORM)框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能...
    登高且赋阅读 5,627评论 0 8
  • 2017年8月23日晚,广州,暴雨。 房外的暴雨湿哒哒地响,屋内的键盘同时也噼里啪啦的响着。 我飞快地敲打出文字,...
    黑哲尔阅读 5,888评论 0 6
  • 木头死了。 我在外面出差,接到妈妈的电话,她失声哭了出来,跟我说了这个消息,上一次妈妈这样,还是姥爷去世的时候,那...
    爱君如初阅读 4,714评论 2 2
  • 我背对着博物馆的守夜人,高高竖起我的衣领,双手插在衣袋里,11月的晚风凉飕飕的,撩散着我的一头乱发,月光还算朦胧的...
    咪咕噜摩西阅读 3,073评论 0 1

友情链接更多精彩内容