TP6 常用数据库操作

ThinkPHP 4316 11 2021-02-05

TP6 常用数据库操作
//添加数据
Db::name('user')->insert($data);
//过滤不存在的字段的值
Db::name('user')->strict(false)->insert($data);
//返回新增数据的自增主键
$userId = Db::name('user')->insertGetId($data);
//添加多条数据
Db::name('user')->insertAll($data);
// 分批写入 每次最多100条数据
Db::name('user')->limit(100)->insertAll($data);


//更新数据
Db::name('user')->where('id', 1)->update(['name' => 'thinkphp']);
// score 字段加 5( 如不加第二个参数,默认步长为1)
Db::table('think_user')->where('id', 1)->inc('score', 5)->update();
// score 字段减 5
Db::table('think_user')->where('id', 1)->dec('score', 5)->update();


//删除数据
// 根据主键删除
Db::table('think_user')->delete(1);
Db::table('think_user')->delete([1,2,3]);
// 条件删除    
Db::table('think_user')->where('id',1)->delete();
Db::table('think_user')->where('id','<',10)->delete();
// 无条件删除所有数据
Db::name('user')->delete(true);
// 软删除数据 使用delete_time字段标记删除
Db::name('user')->where('id', 1)->useSoftDelete('delete_time',time())->delete();


//数据查询
//查询单个数据
Db::name('user')->where('id', 1)->find();
//查询多个数据
Db::name('user')->where('status', 1)->select();
//查询某个字段的值
Db::table('think_user')->where('id', 1)->value('name');
//查询某一列的值
Db::table('think_user')->where('status',1)->column('name');
//游标查询
$cursor = Db::table('user')->where('status', 1)->cursor();
//表达式查询
Db::name('user')->where('id','>',100)->select();
Db::name('user')->where('name', 'like', 'thinkphp%')->select();
Db::name('user')->where('id','between','1,8')->select();
Db::name('user')->where('id','in','1,5,8')->select();
//指定字段查询
Db::table('user')->field('id,nickname as name')->select();
//使用SQL函数查询
Db::table('user')->fieldRaw('id,SUM(score)')->select();
//限制结果数量
Db::table('user')->where('status',1)->field('id,name')->limit(10)->select();
//多表查询
Db::table('think_artist')
->alias('a')
->join('work w','a.id = w.artist_id')
->join('card c','a.card_id = c.id')
->select();
//分页查询,从第10行开始的25条数据
Db::table('article')->limit(10,10)->select();
Db::table('article')->page(1,10)->select();
$list = Db::name('user')->where('status',1)->order('id', 'desc')->paginate(10);
$count = $list->total(); // 获取总记录数
$page = $list->render(); // 获取分页显示
//分页后数据处理
$list = Db::name('user')->where('status',1)->order('id', 'desc')->paginate()->each(function($item, $key){
    $item['nickname'] = 'think';
    return $item;
});
//聚合查询
Db::table('think_user')->count();
Db::table('think_user')->max('score');
Db::table('think_user')->min('score');
Db::table('think_user')->avg('score');
Db::table('think_user')->sum('score');
//时间查询
Db::name('user')->whereTime('birthday', '>=', '1970-10-1')->select();
Db::name('blog')->whereTime('create_time','-2 hours')->select(); // 查询两个小时内的博客
// 查询2017年上半年注册的用户
Db::name('user')->whereBetweenTime('create_time', '2017-01-01', '2017-06-30')->select();
//按年、月、日、周查询
Db::name('user')->whereYear('create_time', '2018')->select();
Db::name('user')->whereMonth('create_time', '2018-06')->select();
Db::name('user')->whereDay('create_time', '2018-06-01')->select();
Db::name('user')->whereWeek('create_time')->select();
//闭包构造子查询
Db::table('think_user')
    ->where('id', 'IN', function ($query) {
        $query->table('think_profile')->where('status', 1)->field('id');
    })
    ->select();

上一篇:TP5实现无限级分类 树形输出

下一篇:TP6实现阿里云短信发送(新版SDK)

讨论数量:0

请先登录再发表讨论。 2024-04-29

天涯网魂
3 杠 5 星
TA 的文章
TA 的随言
TA 的资源链