<?php namespace app\model; use app\exception\RepositoryException; use think\db\exception\DataNotFoundException; use think\db\exception\DbException; use think\db\exception\ModelNotFoundException; use think\model\relation\HasMany; use think\model\relation\HasOne; class Archives extends Base { public const ORIGINAL_TABLE = 'bee_archives'; public const STATUS_NORMAL = 1;//正常 public const STATUS_DISABLE = 0;//禁用 //根据栏目ID获取文章分页列表 public static function getListPageByCategory($categoryId, $per = 20, $keyword = '') { $where = [ ['category_id', '=', $categoryId], ]; $param = []; //$param['category_id'] = $categoryId; if ($keyword != '') { $where[] = ['title', 'like', '%' . $keyword . '%']; $param['keyword'] = $keyword; } $paginate = [ 'list_rows' => $per, 'query' => $param ]; return self::with(["archivesCategory"])->where($where) ->order(["sort"=>"desc"]) ->paginate($paginate, false); } /** * 创建人信息 * * @return HasOne */ public function member(): HasOne { return $this->hasOne(Member::class, 'id', 'created_by')->bind(['nickname']); } /** * 栏目 后台用 * * @return HasOne */ public function category(): HasOne { return $this->hasOne(ArchivesCategory::class, 'id', 'category_id')->bind(['category' => 'title']); } /** * 栏目 * @return HasOne */ public function archivesCategory(): HasOne { return $this->hasOne(ArchivesCategory::class, 'id', 'category_id'); } public static function onAfterInsert( $archives) { $archives->sort = ceil(self::max("sort")+1); $archives->save(); } public static function onBeforeUpdate( $archives) { //检查sort $hasFlag = self::where([ ["sort","=",$archives->sort], ["id","<>",$archives->id] ])->find(); if(!empty($hasFlag)){ throw new RepositoryException('sort不能重复,保留小数点后2位'); } } }