数据库操作

一、不允许使用TP框架集成的Db类,例如:

       
  1. // 错误的做法
  2. Db::table('think_user')->where('id', 1)->find();

二、正确做法是统一使用模型类 think\Model 封装增删改查的方法

例如:

       
  1. /**
  2. * 文章模型
  3. * Class Article
  4. * @package app\common\model
  5. */
  6. class Article extends BaseModel
  7. {
  8. // 定义表名
  9. protected $name = 'article';
  10. // 定义主键
  11. protected $pk = 'article_id';
  12. /**
  13. * 文章详情
  14. * @param int $articleId
  15. * @return array|null|static
  16. */
  17. public static function detail(int $articleId)
  18. {
  19. return self::get($articleId, ['image', 'category']);
  20. }
  21. /**
  22. * 获取文章列表
  23. * @return \think\Paginator
  24. * @throws \think\db\exception\DbException
  25. */
  26. public function getList() {
  27. return $this->where('is_delete', '=', 0)
  28. ->order(['sort' => 'asc', 'create_time' => 'desc'])
  29. ->paginate(15);
  30. }
  31. }

三、在业务代码中调用Model类

       
  1. // 实例化文章模型类
  2. $model = new Article;
  3. // 获取文章列表记录
  4. $list = $model->getList();
  5. .....

四、在模型类中操作数据时使用事务处理,用于确保数据的原子性

       
  1. $this->transaction(function () use ($data) {
  2. // 写入文章记录
  3. $this->save($data);
  4. // 记录后台操作日志
  5. LogModel::add(xxxx);
  6. });