学习目标:
提示:这里可以添加学习目标
例如:
- 一个月掌握阅读完 手册的全部内容( 非初学者,查漏补缺,认识为了解的东西)
- 这自己的约束能力和自控能力有些不足,要坚持
不常见或者没有用过的:
提示:开发中没用过的,或者没有在项目中见过使用的
数据库相关
查询
两个字段的相同的条件查询,可以简化成,如下所示:
->where('name|title','like','thinkphp%')
子查询也可以做联表
表名也可以是一个子查询
$subsql = Db::table('think_work')
->where('status',1)
->field('artist_id,count(id) count')
->group('artist_id')
->buildSql();
Db::table('think_user')
->alias('a')
->join([$subsql=> 'w'], 'a.artist_id = w.artist_id')
->select();
原生查询
参数绑定
支持在原生查询的时候使用参数绑定,包括问号占位符或者命名占位符,例如:
Db::query("select * from think_user where id=? AND status=?",[8,1]);
// 命名绑定
Db::execute("update think_user set name=:name where status=:status",['name'=>'thinkphp','status'=>1]);
JSON字段 tp6才有的
如果你的user表有一个info字段是 JSON 类型的(或者说你存储的是 JSON 格式,但并非是要 JSON 字段类型),你可以使用下面的方式操作数据。
JSON数据写入
$user['name'] = 'thinkphp';
$user['info'] = [
'email' => 'thinkphp@qq.com',
'nickname' => '流年',
];
Db::name('user')
->json(['info'])
->insert($user);
JSON数据查询
$user = Db::name('user')
->json(['info'])
->where('info->nickname','ThinkPHP')
->find();
dump($user);
Db::table('think_user')
->where('info$.email','thinkphp@qq.com')
->find();
JSON数据更新
$data['info'] = [
'email' => 'kancloud@qq.com',
'nickname' => 'kancloud',
];
Db::name('user')
->json(['info'])
->where('id',1)
->update($data);
$data['info->nickname'] = 'ThinkPHP';
Db::name('user')
->json(['info'])
->where('id',1)
->update($data);
事务
可以支持MySQL的XA事务用于实现全局(分布式)事务,你可以使用:
Db::transactionXa(function () {
Db::connect('db1')->table('think_user')->delete(1);
Db::connect('db2')->table('think_user')->delete(1);
}, [Db::connect('db1'),Db::connect('db2')]);
学习时间:
提示:这里可以添加计划学习的时间
例如:
- 周一至周五晚上 10 点—晚上11点
- 周六上午 9 点-上午 11 点
- 周日下午 3 点-下午 6 点
学习产出:
提示:这里统计学习计划的总量
例如:
- 技术笔记 2 遍
- 查看用tp搭建的项目,了解其中的使用情况