81 lines
2.0 KiB
PHP
81 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\ModelFilters;
|
|
|
|
use EloquentFilter\ModelFilter;
|
|
use Illuminate\Support\Arr;
|
|
|
|
class ArticleFilter extends ModelFilter
|
|
{
|
|
/**
|
|
* 主键
|
|
*/
|
|
public function id($id)
|
|
{
|
|
return $this->where('id', $id);
|
|
}
|
|
/**
|
|
* 标题
|
|
*/
|
|
public function title($title)
|
|
{
|
|
return $this->where('title','like', '%'.$title.'%');
|
|
}
|
|
|
|
/**
|
|
* 获取分类下的文章
|
|
*/
|
|
public function category($category)
|
|
{
|
|
return $this->where('category', $category);
|
|
}
|
|
|
|
/**
|
|
* 查询带有标签的文章
|
|
*/
|
|
public function tIds($tIds){
|
|
$tIds = explode(',',$tIds);
|
|
return $this->where(function($q) use ($tIds) {
|
|
foreach ($tIds as $tId) {
|
|
$q->whereRaw("FIND_IN_SET('".$tId."',t_ids)");
|
|
}
|
|
});
|
|
}
|
|
|
|
public function publishedAt($publishedAt){
|
|
$publishedAt = explode(',',$publishedAt);
|
|
return $this->where(function($q) use ($publishedAt) {
|
|
$startAt = Arr::get($publishedAt, 0) ?? null;
|
|
$endAt = Arr::get($publishedAt, 1) ?? null;
|
|
if(!empty($startAt)){
|
|
$q->where('published_at', '>=', $startAt);
|
|
}
|
|
if(!empty($endAt)){
|
|
$q->where('published_at', '<=', $endAt);
|
|
}
|
|
});
|
|
}
|
|
|
|
public function createdAt($createdAt){
|
|
$createdAt = explode(',',$createdAt);
|
|
return $this->where(function($q) use ($createdAt) {
|
|
$startAt = Arr::get($createdAt, 0) ?? null;
|
|
$endAt = Arr::get($createdAt, 1) ?? null;
|
|
if(!empty($startAt)){
|
|
$q->where('created_at', '>=', $startAt);
|
|
}
|
|
if(!empty($endAt)){
|
|
$q->where('created_at', '<=', $endAt);
|
|
}
|
|
});
|
|
}
|
|
|
|
public function enable($enable){
|
|
return $this->where('is_enable', $enable);
|
|
}
|
|
|
|
public function recommend($recommend){
|
|
return $this->where('is_recommend', $recommend);
|
|
}
|
|
}
|