File "ImportCommand.php"
Full Path: /var/www/drive/laravel/scout/src/Console/ImportCommand.php
File size: 1.43 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Laravel\Scout\Console;
use Illuminate\Console\Command;
use Illuminate\Contracts\Events\Dispatcher;
use Laravel\Scout\Events\ModelsImported;
use Symfony\Component\Console\Attribute\AsCommand;
#[AsCommand(name: 'scout:import')]
class ImportCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'scout:import
{model : Class name of model to bulk import}
{--c|chunk= : The number of records to import at a time (Defaults to configuration value: `scout.chunk.searchable`)}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Import the given model into the search index';
/**
* Execute the console command.
*
* @param \Illuminate\Contracts\Events\Dispatcher $events
* @return void
*/
public function handle(Dispatcher $events)
{
$class = $this->argument('model');
$model = new $class;
$events->listen(ModelsImported::class, function ($event) use ($class) {
$key = $event->models->last()->getScoutKey();
$this->line('<comment>Imported ['.$class.'] models up to ID:</comment> '.$key);
});
$model::makeAllSearchable($this->option('chunk'));
$events->forget(ModelsImported::class);
$this->info('All ['.$class.'] records have been imported.');
}
}