%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/common/Database/ |
| Current File : /home/graphicd/public_html/vebto/common/Database/MigrateAndSeed.php |
<?php
namespace Common\Database;
use Common\Core\Manifest\BuildManifestFile;
use Database\Seeders\DatabaseSeeder;
use File;
use Illuminate\Database\Eloquent\Model;
class MigrateAndSeed
{
/**
* @param Callable $afterMigrateCallback
*/
public function execute($afterMigrateCallback = null)
{
// Migrate
if ( ! app('migrator')->repositoryExists()) {
app('migration.repository')->createRepository();
}
$migrator = app('migrator');
$paths = $migrator->paths();
$paths[] = app('path.database').DIRECTORY_SEPARATOR.'migrations';
$migrator->run($paths);
$afterMigrateCallback && $afterMigrateCallback();
// Common seed
$paths = File::files(app('path.common').'/Database/Seeds');
foreach ($paths as $fileInfo) {
Model::unguarded(function() use($fileInfo) {
$namespace = 'Common\Database\Seeds\\'.$fileInfo->getBaseName('.php');
$seeder = app($namespace)->setContainer(app());
$seeder->__invoke();
});
}
// Seed
$seeder = class_exists(\DatabaseSeeder::class) ? app(\DatabaseSeeder::class) : app(DatabaseSeeder::class);
$seeder->setContainer(app());
Model::unguarded(function() use($seeder) {
$seeder->__invoke();
});
// Manifest
app(BuildManifestFile::class)->execute();
}
}