Installation
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:
Laravel\Scout\ScoutServiceProvider::class,
LaravelDoctrine\Scout\ScoutServiceProvider::class,
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.
<?php
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(
$app['em'],
$app['em']->getClassMetadata(Post::class),
$app->make(Laravel\Scout\EngineManager::class)
);
});
Enable the LaravelDoctrine\Scout\SearchableExtension
in the extensions setting in doctrine.php
config.
'extensions' => [
LaravelDoctrine\Scout\SearchableExtension::class,
];