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()。
发表于 2018-05-14
接下来的几个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;