SQL构造器

目录

PESCMS提供了简单的SQL构造器,让编写SQL语句简单化,释放开发者双手,让我们有更多时间陪男/女友。简单之余,我们需要深刻了解SQL构造器的适用范畴,面对复杂的项目,我建议还是用原生SQL语句为好。

field()

参数说明备注
$name返回指定结果字段内容。不填写的时候,则表示数据返回所有字段非必填。

让查询返回指定的字段内容。本方法主要适用于 find() 和 select() 方法。以select方法,输出会员的ID,电子邮箱:

<?php 
$this->db('user')->field('user_id, user_mail')->select();    
//生成: SELECT user_id, user_mail FROM pes_user;

调用field方法,若不填写数据,缺省值为 *,即输出所有字段。在SQL构造器语句中,若您不想指明返回的字段,可以不调用本方法。

where()

参数说明备注
$conditionSQL的筛选条件非必填。一个SQL构造器可以调用多个where() 构造器

where() 方法即SQL语句中的筛选器。本方法适用除原生SQL和insert() 外的所有方法。依旧是以select方法,输出分类ID为1的文章信息:

<?php 
$this->db('article')->where('article_catid = 1')->select();
//生成: SELECT * FROM pes_article WHERE article_catid = 1;

//我们结合field,使结果只输出文章标题,文章日期
$this->db('article')->field('article_title, article_createtime')->where('article_catid = 1')->select();
//生成: SELECT article_title, article_createtime FROM pes_article WHERE article_catid = 1;

一个SQL构造器语句中,可以调用多个where()->where()。

join()

参数说明备注
$condition建立左连表非必填。一个SQL构造器可以调用多个join() 连表构造器

根据业务需求,现在需要将多个表的数据连接一起查询,这时候我们需要用到PESCMS提供的 join() 方法。我们继续结合刚才学的方法,这次我们用select()方法获取文章表的所有信息和文章的对应的分类名称,同时只显示文章标题,文章分类名称:

<?php 
$this->db('article AS a')->field('a.article_title, c.category_name')->join("{$this->prefix}category AS c ON c.category_id = a.article_catid")->select();    
//生成:SELECT a.article_title, c.category_name FROM pes_article LEFT JOIN pes_category AS c ON c.category_id = a.article_catid ;

join() 方法仅适用于 find() 和 select() 查询方法中。

PESCMS提供的 join() 方法仅支持 左联表(LEFT JOIN)!

一个SQL构造器语句中,可以调用多个join()->join()。

接下来的几个SQL构造器方法,均只适用于 fecth() 和 select() 查询方法

order()

参数说明备注
$condition排序的条件非必填。

我们需要对获取的数据进行排序,使用order()方法:

<?php 
$this->db('user')->order('user_id desc')->select();    
//生成:SELECT * FROM pes_user ORDER BY user_id desc;

group()

参数说明备注
$condition数据合集非必填。

对获取的数据进行分组合并,使用group()方法:

<?php 
$this->db('user')->group('user_id')->select();    
//生成:SELECT * FROM pes_user GROUP BY user_id;

limit()

参数说明备注
$condition限制输出非必填。

限制输出的条目数量,使用limit()方法,通常limit()方法与分页一起使用:

<?php 
$this->db('article')->limit('0, 10')->select();    
//生成:SELECT * FROM pes_article LIMIT 0, 10;

PESCMS DOC 文档系统
© Copyright 2015-2020. by the PESCMS DOC
耗时0.0228秒