* @date 2020-01-28 20:41:32 */ declare(strict_types=1); namespace App\Repositories\Criterias; use Hyperf\Database\Query\Builder; use KZ2\Repositories\Contracts\RepositoryInterface; use KZ2\Repositories\Criteria\Criteria; class CommentCriteria extends Criteria { private $params = []; public function __construct($params = []) { $this->params = $params; } /** * @param Builder $model * @param RepositoryInterface $repository * @return mixed|void */ public function apply( $model, RepositoryInterface $repository ) { $model = $model->with(['user:code,nick,gender,avatar']); if (!empty($this->params['module'])) { $model = $model->where('module', $this->params['module']); } if (!empty($this->params['svalue'])) { $model = $model->where('svalue', $this->params['svalue']); } if (!empty($this->params['user_id'])) { $model = $model->where('user_id', $this->params['user_id']); } $topType = isset($this->params['top_type']) ? trim($this->params['top_type']) : ''; if (!empty($topType)) { switch ($topType) { case 'only_top': $model = $model->where('is_top', 1); break; case 'not_top': $model = $model->where('is_top', 0); break; default: break; } } if (!empty($this->params['parent_id'])) { $model = $model->where('parent_id', $this->params['parent_id']); } return $model; } }