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

This commit is contained in:
2025-03-28 14:54:00 +08:00
parent 35d153628d
commit 8c78c748a7
2 changed files with 35 additions and 16 deletions

View File

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

View File

@@ -31,14 +31,41 @@ class ArticleModel extends ArticleBaseModel
// 搜索名称
public function searchTitleAttr($query, $value, $data)
{
if (is_null($value)) {
return;
}
$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 (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]);
} else {
$query->whereTime('created_at', '>=', $value[0]);