比如参数中有sort排序参数,flag标示过滤条件等等;
封装并验证sort参数的有效性,并追加order排序条件;
封装并验证flag的有效性,并追加where过滤条件。
以下是模型中部分代码。但是追加报错,能力有限,还望高人指点;
//通过过滤条件查询当前版块的帖子,不同方式排序,不同类型帖子
//sort排序,flag帖子类型,page页码
//是否开启分页
//当前页数
//每页显示条数
public static function getForumPostsWithFilter($id, $sort = 'default', $flag = 'default', $size = 30)
{
return self::where(['id' => $id, 'status' => self::STATUS_ACTIVE])
->applySort($sort) //追加排序条件
->select();
}
//动态追加排序条件
public function applySort($sort)
{
switch ($sort) {
case 'recent':
return $this->sortRecent();
break;
default:
return $this->sortActive(); //最后回复排序
break;
}
}
//最新帖子排序
protected function sortRecent()
{
return $this->order('created_at', 'desc');
}
//最后回复排序
protected function sortActive()
{
return $this->order('updated_at', 'desc');
}
最佳答案
