91 lines
2.2 KiB
PHP
91 lines
2.2 KiB
PHP
<?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位');
|
|
}
|
|
}
|
|
}
|