protected function getFields(): array
    {
        if (empty($this->searchFields)) {
            return [];
        }

        $event = new Event((string)EventName::MODEL_SEARCH_BASIC_SEARCH_FIELDS(), $this, [
            'table' => $this->table
        ]);
        EventManager::instance()->dispatch($event);

        $result = (array)$event->result;

        if (empty($result)) {
            $result = (array)$this->table->aliasField($this->table->getDisplayField());
        }

        $result = $this->filterFields($result);

        if (!empty($result)) {
            return $result;
        }

        $result = $this->getDefaultFields();

        return $result;
    }