數據庫操作

一、不允許使用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. });