['media_source', 'creator_name', 'remark'], ]; } private function baseQuery() { $query = PersonalYeji::where($this->searchWhere); $this->applyDataScopeByOwner($query, 'creator_id'); if (!empty($this->params['start_date']) && !empty($this->params['end_date'])) { $query->whereBetween('yeji_date', [$this->params['start_date'], $this->params['end_date']]); } elseif (!empty($this->params['start_date'])) { $query->where('yeji_date', '>=', $this->params['start_date']); } elseif (!empty($this->params['end_date'])) { $query->where('yeji_date', '<=', $this->params['end_date']); } if (!empty($this->params['media_source'])) { $query->whereLike('media_source', '%' . trim((string) $this->params['media_source']) . '%'); } if (!empty($this->params['creator_id'])) { $query->where('creator_id', (int) $this->params['creator_id']); } return $query; } public function lists(): array { return $this->baseQuery() ->order(['yeji_date' => 'desc', 'id' => 'desc']) ->limit($this->limitOffset, $this->limitLength) ->select() ->toArray(); } public function count(): int { return (int) $this->baseQuery()->count(); } }