This repository has been archived on 2024-07-11. You can view files and clone it, but cannot push or open issues or pull requests.
yoshop/source/application/api/model/Article.php

88 lines
2.0 KiB
PHP
Raw Normal View History

2020-04-25 22:20:29 +08:00
<?php
namespace app\api\model;
use app\common\exception\BaseException;
use app\common\model\Article as ArticleModel;
/**
* 商品评价模型
* Class Article
* @package app\api\model
*/
class Article extends ArticleModel
{
/**
* 追加字段
* @var array
*/
protected $append = [
'show_views',
'view_time'
];
/**
* 隐藏字段
* @var array
*/
protected $hidden = [
'is_delete',
'wxapp_id',
'create_time',
'update_time'
];
/**
* 文章详情HTML实体转换回普通字符
* @param $value
* @return string
*/
public function getArticleContentAttr($value)
{
return htmlspecialchars_decode($value);
}
public function getViewTimeAttr($value, $data)
{
return date('Y-m-d', $data['create_time']);
}
/**
* 文章详情
* @param $article_id
* @return ArticleModel|null
* @throws BaseException
* @throws \think\Exception
* @throws \think\exception\DbException
*/
public static function detail($article_id)
{
if (!$model = parent::detail($article_id)) {
throw new BaseException(['msg' => '文章不存在']);
}
// 累积阅读数
$model->setInc('actual_views', 1);
return $model;
}
/**
* 获取文章列表
* @param int $category_id
* @param int $limit
* @return \think\Paginator
* @throws \think\exception\DbException
*/
public function getList($category_id = 0, $limit = 15)
{
$category_id > 0 && $this->where('category_id', '=', $category_id);
return $this->field(['article_content'], true)
->with(['image', 'category'])
->where('article_status', '=', 1)
->where('is_delete', '=', 0)
->order(['article_sort' => 'asc', 'create_time' => 'desc'])
->paginate($limit, false, [
'query' => \request()->request()
]);
}
}