refactor: 修改文章发布时间搜索

This commit is contained in:
2025-03-28 14:54:00 +08:00
parent 5696b25705
commit 63c3f39e7d
2 changed files with 35 additions and 16 deletions

View File

@@ -17,7 +17,7 @@ class Article
$param = request()->param([ $param = request()->param([
'title', 'title',
'category_id', 'category_id',
'created_at', 'release_time',
'page/d' => 1, 'page/d' => 1,
'size/d' => 10, 'size/d' => 10,
]); ]);
@@ -42,18 +42,10 @@ class Article
$query->where('category_id', '=', $param['category_id']); $query->where('category_id', '=', $param['category_id']);
} }
}) })
->withSearch(['title', 'created_at'], (function() use($param) { ->withSearch(['title', 'release_time'], [
$condition = []; 'title' => $param['title']??null,
if (isset($param['title'])) { 'release_time' => !empty($param['release_time']) ? explode(',', $param['release_time']) : null
$condition['title'] = $param['title']; ])
}
if (isset($param['created_at'])) {
$condition = [
'created_at' => explode(',', $param['created_at'])
];
}
return $condition;
})())
->order('sort', 'desc') ->order('sort', 'desc')
->paginate([ ->paginate([
'page' => $param['page'], 'page' => $param['page'],
@@ -241,8 +233,8 @@ class Article
->language(request()->lang_id) ->language(request()->lang_id)
->categoryNullable($param['category_id']??null) ->categoryNullable($param['category_id']??null)
->withSearch(['title', 'created_at'], [ ->withSearch(['title', 'created_at'], [
'title' => $param['title']??'', 'title' => $param['title']??null,
'created_at' => !empty($param['created_at'])?explode(',', $param['created_at']):'' 'release_time' => !empty($param['release_time'])?explode(',', $param['release_time']):null
]) ])
->order('sort', 'desc') ->order('sort', 'desc')
->select() ->select()

View File

@@ -31,14 +31,41 @@ class ArticleModel extends ArticleBaseModel
// 搜索名称 // 搜索名称
public function searchTitleAttr($query, $value, $data) public function searchTitleAttr($query, $value, $data)
{ {
if (is_null($value)) {
return;
}
$query->where('title', 'like', '%' . $value . '%'); $query->where('title', 'like', '%' . $value . '%');
} }
// 搜索发布时间 // 搜索发布时间
public function searchCreatedAtAttr($query, $value, $data) public function searchReleaseTimeAttr($query, $value, $data)
{ {
if (is_null($value)) {
return;
}
if (is_array($value)) { if (is_array($value)) {
if (count($value) == 2) { if (count($value) == 2) {
if ($value[0] == $value[1]) {
$value[1] = date('Y-m-d 23:59:59', strtotime($value[1]));
}
$query->whereBetweenTime('release_time', $value[0], $value[1]);
} else {
$query->whereTime('release_time', '>=', $value[0]);
}
}
}
// 搜索新增时间
public function searchCreatedAtAttr($query, $value, $data)
{
if (is_null($value)) {
return;
}
if (is_array($value)) {
if (count($value) == 2) {
if ($value[0] == $value[1]) {
$value[1] = date('Y-m-d 23:59:59', strtotime($value[1]));
}
$query->whereBetweenTime('created_at', $value[0], $value[1]); $query->whereBetweenTime('created_at', $value[0], $value[1]);
} else { } else {
$query->whereTime('created_at', '>=', $value[0]); $query->whereTime('created_at', '>=', $value[0]);