1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- <?php
- namespace App\Search\Traits;
- use App\Search\Builders\ElasticsearchBuilder;
- use Closure;
- use Laravel\Scout\Builder;
- use Laravel\Scout\Searchable;
- trait ElasticsearchSearchable
- {
- use Searchable;
- /**
- * Get the index name for the model.
- *
- * @return string
- */
- public function searchableAs()
- {
- return config('scout.elasticsearch_index_prefix').$this->search_index;
- }
- /**
- * Perform a search against the model's indexed data.
- *
- * @param string $query
- * @param Closure $callback
- * @return ElasticsearchBuilder
- */
- public static function search($query = '', $callback = null)
- {
- return app(ElasticsearchBuilder::class, [
- 'model' => new static,
- 'query' => $query,
- 'callback' => $callback,
- 'softDelete'=> config('scout.soft_delete', false)
- ]);
- }
- /**
- * Get the requested models from an array of object IDs;
- *
- * @param \Laravel\Scout\Builder $builder
- * @param array $ids
- * @return mixed
- */
- public function getScoutModelsByIds(Builder $builder, array $ids)
- {
- $query = $this->newQuery();
- if ($builder->queryCallback) {
- call_user_func($builder->queryCallback, $query);
- }
- return $query->whereIn($this->getScoutKeyName(), $ids)->get();
- }
- }
|