ThinkPHP中的常用辅助方法

在TinkPHP中常用的辅助方法

在原生的sql语句中除了我们目前所使用的基本的操作,还有类似于group、where、order、limit等等这样的子句。

而在ThinkPHP也封装了相应的子句方法:

 where 表示限制查询的条件

 limit 表示限制输出的条数

 field 表示限制输出的字段

 order 表示按照指定的字段进行指定的排序

 group 表示按照指定的字段进行分组查询

一、where方法

作用:限制查询的条件。

在原生的sql语句中where的语法格式为:select 字段 from 表 where 条件;

在ThinkPHP中系统封装了一个where方法来实现在原生的sql语句中的where方法。

语法:

$model -> where(条件表达式);     //在ThinkPHP中条件表达式支持字符串形式也支持数组形式,但是推荐使用字符串形式。

$model -> CURD操作;

案例:使用where方法查询部门表中部门id小于10的数据信息。

    public function test(){
        //实例化模型
        $model = M('Dept');
        //where方法
        $model -> where('id < 10');
        //查询操作
        $result = $model -> select();
        //打印
        dump($result);
    }

显示结果:

sql跟踪信息中的结果:


数据库信息:



在mysql中除了where子句之外,还有一个语法格式也能限制查询条件,这个语法是having语法。

问题:where子句和having子句有什么区别?

答:两个语句都表示限制查询条件,但是意义上有差异,where表示限制查询条件,但是要求条件中的字段必须是数据表中存在的字段;而having要求条件中的字段必须是结果集中存在的

 二、limit方法

在原生的sql语句中limit方法具体语法格式为:select 字段 from 表 where 限制条件 limit 限制条数;

在ThinkPHP中系统提供了一个limit方法来实现原生的sql语句限制条数的效果,具体的语法格式为:

第一种:$model -> limit(n);    //字母n表示一个大于0的数字,代表着输出前n行记录

第二种:$model -> limit(起始位置,偏移量/长度);    //表示从起始位置开始,往后查询指定长度的记录数,在实际使用时也支持写成$model -> limit('起始位置,偏移量/长度');

案例:使用limit方法来实现查询表中的数据限制。

第一种方法:$model -> limit(n);

    //limit方法
    public function test(){
        //实例化模型
        $model = M('Dept');
        //limit方法
        $model -> limit(2);//输出前2行记录
        //查询操作
        $result = $model -> select();
        //打印
        dump($result);
    }

显示结果:

sql跟踪信息中的结果:

数据库信息:

第二种方法:$model -> limit(起始位置,偏移量/长度);

    public function test(){
        //实例化模型
        $model = M('Dept');
        //limit方法
        $model -> limit(1,2);//输出从第二条记录开始到第三条记录
        //查询操作
        $result = $model -> select();
        //打印
        dump($result);
    }

显示结果:

sql跟踪信息中的结果:

数据库中的信息:

三、field方法

作用:限制输出的字段。

原生的sql语句:select 字段 from 表。

语法格式:$model -> field('字段1,字段2,字段3,...[as 别名]');

案例:通过field方法查询id和name字段的记录。

则原生的sql语句为:select id,name from oa_dept;

    //field方法
    public function test(){
        //实例化模型
        $model = M('Dept');
        //限制字段
        $model -> field('id,name');//查询id和name字段中的记录
        //查询操作
        $result = $model -> select();
        //打印
        dump($result);
    }

显示结果:


sql跟踪信息中的结果:


数据库中的信息:

说明:上述三个方法在父类模型中都是真实存在的。

四、order方法

作用:按照 指定的字段进行 指定的规则排序。

原生的sql语句为:order by 字段 排序规则(升序asc/降序desc);

语法:

$model -> order('字段名 排序规则');

案例:使用order方法查询部门表中的数据,并且按照id进行降序排列。

原生的sql:select * from oa_dept order by id desc;


    //order方法
    public function test(){
        //实例化模型
        $model = M('Dept');
        //order方法排序
        $model -> order('id desc');//指定字段id,降序排列
        //查询操作
        $result = $model -> select();
        //打印
        dump($result);
    }

显示结果:

sql跟踪信息中的结果:


数据库中的信息:


五、group方法

作用:查询分组。

在ThinkPHP中group分组可以使用group方法来实现:
$model -> group('字段名');

案例:使用group的方法去查询部门表,要求查询出部门名称和出现的次数。

原生的sql语句:select name,count(*) from oa_dept group by name;

使用group方法来实现:

因为上述的原生sql使用了限制字段和分组查询,所以在ThinkPHP中光靠group方法没有办法实现案例要求,还需要配合filed方法来实现。

    //group方法
    public function test(){
        //实例化模型
        $model = M('Dept');
        //group方法
        $model -> group('name');
        //field方法
        $model -> field('name,count(*)');
        //查询操作
        $result = $model -> select();
        //打印
        dump($result);
    }

显示结果:

sql跟踪信息中的结果:

数据库中的信息:


说明:上面2个方法(order、group)在父类模型中是不存在的,其在使用的时候是通过魔术方法__call来实现后续的处理的。




猜你喜欢

转载自blog.csdn.net/qq_41630218/article/details/81032038
今日推荐