Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
tipuloidea
/
back
/
vendor
/
laravel
/
scout
/
src
/
Console
:
QueueImportCommand.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace Laravel\Scout\Console; use Illuminate\Console\Command; use Laravel\Scout\Exceptions\ScoutException; use Laravel\Scout\Jobs\MakeRangeSearchable; use Symfony\Component\Console\Attribute\AsCommand; #[AsCommand(name: 'scout:queue-import')] class QueueImportCommand extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'scout:queue-import {model : Class name of model to bulk queue} {--min= : The minimum ID to start queuing from} {--max= : The maximum ID to queue up to} {--c|chunk= : The number of records to queue in a single job (Defaults to configuration value: `scout.chunk.searchable`)} {--queue= : The queue that should be used (Defaults to configuration value: `scout.queue.queue`)}'; /** * The console command description. * * @var string */ protected $description = 'Import the given model into the search index via chunked, queued jobs'; /** * Execute the console command. * * @return void * * @throws ScoutException */ public function handle() { $class = $this->argument('model'); if (! class_exists($class) && ! class_exists($class = app()->getNamespace()."Models\\{$class}")) { throw new ScoutException("Model [{$class}] not found."); } $model = new $class; $query = $model::makeAllSearchableQuery(); $min = $this->option('min') ?? $query->min($model->getScoutKeyName()); $max = $this->option('max') ?? $query->max($model->getScoutKeyName()); $chunk = max(1, (int) ($this->option('chunk') ?? config('scout.chunk.searchable', 500))); if (! $min || ! $max) { $this->info('No records found for ['.$class.'].'); return; } if (! is_numeric($min) || ! is_numeric($max)) { $this->error('The primary key for ['.$class.'] is not numeric.'); return; } for ($start = $min; $start <= $max; $start += $chunk) { $end = min($start + $chunk - 1, $max); dispatch(new MakeRangeSearchable($class, $start, $end)) ->onQueue($this->option('queue') ?? $model->syncWithSearchUsingQueue()) ->onConnection($model->syncWithSearchUsing()); $this->line('<comment>Queued ['.$class.'] models up to ID:</comment> '.$end); } $this->info('All ['.$class.'] records have been queued for importing.'); } }