| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | <?phpnamespace 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();    }}
 |