Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
gilour
/
laravel
/
scout
/
src
/
Attributes
:
SearchableScope.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace Laravel\Scout; use Illuminate\Database\Eloquent\Builder as EloquentBuilder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasManyThrough; use Illuminate\Database\Eloquent\Scope; use Laravel\Scout\Events\ModelsFlushed; use Laravel\Scout\Events\ModelsImported; class SearchableScope implements Scope { /** * Apply the scope to a given Eloquent query builder. * * @param \Illuminate\Database\Eloquent\Builder $builder * @param \Illuminate\Database\Eloquent\Model $model * @return void */ public function apply(EloquentBuilder $builder, Model $model) { // } /** * Extend the query builder with the needed functions. * * @param \Illuminate\Database\Eloquent\Builder $builder * @return void */ public function extend(EloquentBuilder $builder) { $builder->macro('searchable', function (EloquentBuilder $builder, $chunk = null) { $scoutKeyName = $builder->getModel()->getScoutKeyName(); $builder->chunkById($chunk ?: config('scout.chunk.searchable', 500), function ($models) { $models->filter->shouldBeSearchable()->searchable(); event(new ModelsImported($models)); }, $builder->qualifyColumn($scoutKeyName), $scoutKeyName); }); $builder->macro('unsearchable', function (EloquentBuilder $builder, $chunk = null) { $scoutKeyName = $builder->getModel()->getScoutKeyName(); $builder->chunkById($chunk ?: config('scout.chunk.unsearchable', 500), function ($models) { $models->unsearchable(); event(new ModelsFlushed($models)); }, $builder->qualifyColumn($scoutKeyName), $scoutKeyName); }); HasManyThrough::macro('searchable', function ($chunk = null) { /** @var HasManyThrough $this */ $this->chunkById($chunk ?: config('scout.chunk.searchable', 500), function ($models) { $models->filter->shouldBeSearchable()->searchable(); event(new ModelsImported($models)); }); }); HasManyThrough::macro('unsearchable', function ($chunk = null) { /** @var HasManyThrough $this */ $this->chunkById($chunk ?: config('scout.chunk.unsearchable', 500), function ($models) { $models->unsearchable(); event(new ModelsFlushed($models)); }); }); } }