数据库操作
一、不允许使用TP框架集成的Db类,例如:
// 错误的做法Db::table('think_user')->where('id', 1)->find();
二、正确做法是统一使用模型类 think\Model 封装增删改查的方法
例如:
/*** 文章模型* Class Article* @package app\common\model*/class Article extends BaseModel{// 定义表名protected $name = 'article';// 定义主键protected $pk = 'article_id';/*** 文章详情* @param int $articleId* @return array|null|static*/public static function detail(int $articleId){return self::get($articleId, ['image', 'category']);}/*** 获取文章列表* @return \think\Paginator* @throws \think\db\exception\DbException*/public function getList() {return $this->where('is_delete', '=', 0)->order(['sort' => 'asc', 'create_time' => 'desc'])->paginate(15);}}
三、在业务代码中调用Model类
// 实例化文章模型类$model = new Article;// 获取文章列表记录$list = $model->getList();.....
四、在模型类中操作数据时使用事务处理,用于确保数据的原子性
$this->transaction(function () use ($data) {// 写入文章记录$this->save($data);// 记录后台操作日志LogModel::add(xxxx);});