56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Console;
 | |
| 
 | |
| /**
 | |
|  * @mixin \Illuminate\Console\Command
 | |
|  */
 | |
| trait RequiresDatabaseMigrations
 | |
| {
 | |
|     /**
 | |
|      * Checks if the migrations have finished running by comparing the last migration file.
 | |
|      */
 | |
|     protected function hasCompletedMigrations(): bool
 | |
|     {
 | |
|         /** @var \Illuminate\Database\Migrations\Migrator $migrator */
 | |
|         $migrator = $this->getLaravel()->make('migrator');
 | |
| 
 | |
|         $files = $migrator->getMigrationFiles(database_path('migrations'));
 | |
| 
 | |
|         if (!$migrator->repositoryExists()) {
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         if (array_diff(array_keys($files), $migrator->getRepository()->getRan())) {
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Throw a massive error into the console to hopefully catch the users attention and get
 | |
|      * them to properly run the migrations rather than ignoring all of the other previous
 | |
|      * errors...
 | |
|      */
 | |
|     protected function showMigrationWarning(): void
 | |
|     {
 | |
|         $this->getOutput()->writeln('<options=bold>
 | |
| | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
 | |
| |                                                                              |
 | |
| |               Your database has not been properly migrated!                  |
 | |
| |                                                                              |
 | |
| | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |</>
 | |
| 
 | |
| You must run the following command to finish migrating your database:
 | |
| 
 | |
|   <fg=green;options=bold>php artisan migrate --step --force</>
 | |
| 
 | |
| You will not be able to use the Panel as expected without fixing your
 | |
| database state by running the command above.
 | |
| ');
 | |
| 
 | |
|         $this->getOutput()->error('You must correct the error above before continuing.');
 | |
|     }
 | |
| }
 | 
