|
5 | 5 | use Illuminate\Console\Command; |
6 | 6 | use Illuminate\Contracts\Events\Dispatcher; |
7 | 7 | use TeamTNT\TNTSearch\TNTSearch; |
| 8 | +use Illuminate\Support\Facades\Schema; |
8 | 9 |
|
9 | 10 | class ImportCommand extends Command |
10 | 11 | { |
@@ -37,27 +38,27 @@ public function handle(Dispatcher $events) |
37 | 38 | $tnt = new TNTSearch(); |
38 | 39 | $driver = $model->getConnectionName() ?: config('database.default'); |
39 | 40 | $config = config('scout.tntsearch') + config("database.connections.$driver"); |
40 | | - $tablePrefix = $config['prefix'] ?? ''; |
41 | | - $tableName = $tablePrefix.$model->getTable(); |
| 41 | + $db = app('db')->connection($driver); |
42 | 42 |
|
43 | 43 | $tnt->loadConfig($config); |
44 | | - $tnt->setDatabaseHandle(app('db')->connection($driver)->getPdo()); |
| 44 | + $tnt->setDatabaseHandle($db->getPdo()); |
45 | 45 |
|
46 | 46 | $indexer = $tnt->createIndex($model->searchableAs().'.index'); |
47 | 47 | $indexer->setPrimaryKey($model->getKeyName()); |
48 | 48 |
|
49 | | - $availableColumns = \Schema::getColumnListing($model->getTable()); |
| 49 | + $availableColumns = Schema::connection($driver)->getColumnListing($model->getTable()); |
50 | 50 | $desiredColumns = array_keys($model->toSearchableArray()); |
51 | 51 |
|
52 | | - $fields = implode(', ', array_intersect($desiredColumns, $availableColumns)); |
| 52 | + $fields = array_intersect($desiredColumns, $availableColumns); |
53 | 53 |
|
54 | | - $query = "{$model->getKeyName()}, $fields"; |
| 54 | + $query = $db->table($model->getTable()); |
55 | 55 |
|
56 | | - if ($fields == '') { |
57 | | - $query = '*'; |
| 56 | + if ($fields) { |
| 57 | + $query->select($model->getKeyName()) |
| 58 | + ->addSelect($fields); |
58 | 59 | } |
59 | 60 |
|
60 | | - $indexer->query("SELECT $query FROM {$tableName};"); |
| 61 | + $indexer->query($query->toSql()); |
61 | 62 |
|
62 | 63 | $indexer->run(); |
63 | 64 | $this->info('All ['.$class.'] records have been imported.'); |
|
0 commit comments