for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Mtolhuys\LaravelSchematics\Actions\Migration;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\File;
use Mtolhuys\LaravelSchematics\Http\Requests\DeleteRelationRequest;
use Mtolhuys\LaravelSchematics\Actions\Migration\Traits\DeletesMigrations;
class DeleteMigrationAction
{
use DeletesMigrations;
/**
* @param $request
* @return string
*/
public function execute($request)
$migrations = scandir($this->path);
foreach ($migrations as $migration) {
if ($this->isRelatedMigration($migration, $request)) {
if ($this->autoMigrate) {
$this->down($migration);
}
File::delete("$this->path/$migration");
* @param $migration
* @return bool
private function isRelatedMigration($migration, $request): bool
$content = file_get_contents("$this->path/$migration");
if ($request instanceof DeleteRelationRequest) {
return strpos($content, "laravel-schematics-{$request['table']}-relation") !== false;
$table = Str::plural(Str::snake(
substr($request['name'], strrpos($request['name'], '\\') + 1)
));
return strpos($content, "laravel-schematics-$table-model") !== false
|| strpos($content, "laravel-schematics-$table-relation") !== false;