|
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