数据库操作
一、不允许使用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);
});