表达式是 SQL 语句的条件
表达式不分大小写
表达式写在 where 里
表达式 | 含义 | 查询方法 |
---|---|---|
= | 等于 | |
<> | 不等于 | |
> | 大于 | |
>= | 大于等于 | |
< | 小于 | |
<= | 小于等于 | |
[NOT] LIKE | 模糊查询 | whereLike/whereNotLike |
[NOT] BETWEEN | (不在)区间查询 | whereBetween/whereNotBetween |
[NOT] IN | (不在)IN 查询 | whereIn/whereNotIn |
[NOT] NULL | 查询字段是否(不)是 NULL | whereNull/whereNotNull |
表达式
where方法在链式操作方法里面是最常用的方法,可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在内的条件查询操作
|LIKE|模糊查询|whereLike/whereNotLike|
|[NOT] LIKE|模糊查询|whereLike/whereNotLike|
总而言之,加上not的就是取反,不加not的就是正式
聚合查询
聚合方法查询后:没有数据,返回 0,聚合查询可以配合查询条件
方法 | 功能 |
---|---|
count | 统计数量,参数是要统计的字段名(可选) |
max | 获取最大值,参数是要统计的字段名(必须) |
min | 获取最小值,参数是要统计的字段名(必须) |
avg | 获取平均值,参数是要统计的字段名(必须) |
sum | 获取总数,参数是要统计的字段名(必须) |
|count|统计数量,参数是要统计的字段名(可选)|
|max|获取最大值,参数是要统计的字段名(必须)|
|avg|获取平均值,参数是要统计的字段名(必须)|
|sum|获取总数,参数是要统计的字段名(必须)|
join* 用于对查询的 join 支持 字符串和数组
如果用join多表查询,不限制两个表的id 或者一个表的id,也就是全字段查询,则id会重复,所以下面选择性的查询另外一个表的字段,id则不会重复
query 方法:查询
execute 方法:添加和修改
getLastsql 调试执行的 SQL 语句
fetchSql 调试执行的 SQL 语句,而不执行
isEmpty 是否为空
toArray 转换为数组
InnoDB引擎支持事务处理,MyISAM不支持事务处理
这两种引擎在表里设置
ThinkPHP3.0-5.1 事务开启
其中时间设置错误,会自动回滚到原点,并不会插入数据
ThinkPHP6.0 事务开启
transaction 方法操作数据库事务,当闭包中的代码发生异常会自动回滚
Db::transaction 采用闭包的方式进行事物回滚,只要里面出错就直接回滚到原点
paginate 内置了分页实现,要给数据添加分页输出功能变得非常简单
raw 不使用(默认)转义
render 获取分页显示
total 获取总数量
public function index() { //查询文章和导航相对应绑定的值 $id = Request::get('id',0); //查询搜索值 $t = Request::get('t',""); //查询翻页值 $p = Request::get('page',1); if (isset($id) && !empty($id)) { //查询分类文章 $boke = Db::table('boke a') ->field('a.*,c.name') ->join(['cat' => 'c'],'a.cat = c.id') ->where("cat",$id) ->page($p,5) ->order('date DESC') ->select(); }else if (isset($t) && !empty($t)){ //查询搜索文章 $boke = Db::table('boke a') ->field('a.*,c.name') ->join(['cat' => 'c'],'a.cat = c.id') ->where('title',"like","%$t%") ->page($p,5) ->order('date DESC') ->select(); }else { //查询全部文章 $boke = Db::table('boke a') ->field('a.*,c.name') ->join(['cat' => 'c'],'a.cat = c.id') ->page($p,5) ->order('date DESC') ->select(); } //分页模板 $page = Db::table('boke') ->where('status',1) ->order('date DESC') ->paginate(5); //查询导航字段 $cat = Db::table('cat') ->where('status',1) ->order('sort DESC') ->select(); //查询热门文章 $TopArticle = Db::table('boke') ->where('status',1) ->order('num DESC') ->limit(3) ->select(); View::assign([ 'boke' => $boke, 'cat' => $cat, 't'=>$t, 'TopArticle' => $TopArticle, 'page' => $page, ]); return View::fetch(); }
JiaJieChen个人博客
同学们大家好。
{foreach($boke as $boke_v)}{/foreach}{$boke_v['title']}
{$boke_v['content']}