First, install the Scout via the Composer package manager:

composer require laravel/scout
composer require laravel-doctrine/scout

Next, you should add the ScoutServiceProvider to the providers array of your config/app.php configuration file:


After registering the Scout service providers, you should publish the Scout configuration using the vendor:publish Artisan command. This command will publish the scout.php configuration file to your config directory:

php artisan vendor:publish

The entities that should be searchable should implement LaravelDoctrine\Scout\Searchable. You can use the LaravelDoctrine\Scout\Indexable trait to provide sensible defaults to adhere to the interface.


class Post implements Searchable
    use Indexable;

The repositories for these entities should extend LaravelDoctrine\Scout\SearchableRepository.

class DoctrinePostRepository extends LaravelDoctrine\Scout\SearchableRepository implements PostRepository

You should bind them to the container as followed:

$this->app->bind(PostRepository::class, function($app) {
    return new DoctrinePostRepository(

Enable the LaravelDoctrine\Scout\SearchableExtension in the extensions setting in doctrine.php config.

'extensions'                => [