查询构造器

查询

一般查询

use think\facade\Db;
// 查询所有
Db::table('table')->select()->toArray();
// 查询单个字段
Db::table('table')->field('字段名')->select()->toArray();
// 查询多个字段
Db::table('table')->field('字段1,字段2')->select()->toArray();
// 与where配合
Db::table('table')->where('id', '=', 15)->field('字段1, 字段2')->select()->toArray();
// 排序-单个条件
Db::table('table')->order('createTime', 'DESC')->select()->toArray();
// 排序-多个条件
Db::table('table')->order(['createTime','Id'=>'DESC'])->select()->toArray();

数据去重distinct(true)

Db::table('think_user')->distinct(true)->field('user_login')->select();

单字段多条件查询

$user_order_form = Db::table('user_order_form')
                        ->whereOr([
                            [
                                ['openid', '=', $openid],
                                ['select_time', '=', date('Y-m-d', time())],
                                ['state', '=', 1]
                            ],[
                                ['openid', '=', $openid],
                                ['select_time', '=', date('Y-m-d', time())],
                                ['state', '=', 2]
                            ]
                        ])
                        ->select()->toArray();

上面例子中,同一个字段state,可判断为1或者为2的条件。

之所以每个数组,都要将其它数组的相同字段一起写上,是因为每次判断,都得是三个字段一起判断,如果某个数组少写了要判断的字段,哪怕在判断该数组的state时,就会忽略比如openid或者select_name字段,从而导致查出不准确的数据。

关联查询

// 关联查询
Db::table('table')
    ->alias('a')
    ->join('table2 b', 'a.Id=b.aId)
    ->join('table3 c', 'a.cId=c.Id)
    ->select()->toArray();
// 关联查询,查询指定字段
Db::table('table')
    ->alias('a')
    ->join('table2 b', 'a.Id=b.aId)
    ->join('table3 c', 'a.cId=c.Id)
    ->field('a.name, b.name, c.name')
    ->select()->toArray();
// 关联查询,多表中有重复字段,解决方法,使用as,为其临时改名
Db::table('table')
    ->alias('a')
    ->join('table2 b', 'a.Id=b.aId)
    ->join('table3 c', 'a.cId=c.Id)
    ->field('a.name, b.name as b_name, c.name as c_name')
    ->select()->toArray();

限制结果查询

// 限制结果数量 limit(从索引几开始,查询几个),如果只传入一个参数,则代表返回该参数个数的数据,比如20,则输出20条数据
Db::table('table')
    ->limit(0,10)
    ->select()->toArray();
// 限制结果数量 page(第几页,查询几个),比如page(1,10),就是第一页,返回10个,如果是page(2,10),就是第二页,返回10个
Db::table('table')
    ->page(1,10)
    ->select()->toArray();

新增

// 新增,并返回新增条数,通常情况,成功返回1
Db::table('table')->insert([
    'name'=>'李某',
    'age'=>30
]);
// 新增,并返回新增数据的主键
Db::table('table')->insertGetId([
    'name'=>'李某',
    'age'=>30
]);

更新(修改)

// 方式一
Db::table('table')->where('id','=',10)->update([
    'age'=>29
]);
// 方式二
Db::table('table')->where([
    'id'=>10,
    'createTime'=>'2021-4-22 15:19'
]);

给TA买糖
共{{data.count}}人
人已赞赏
tp6-边用边总结

自定义多个公共函数

2021-4-20 23:32:51

tp6-边用边总结

自定义类库extends

2021-4-26 11:01:15

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索