CreateRelationMigrationAction::execute()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 18
rs 9.6666
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Mtolhuys\LaravelSchematics\Actions\Migration;
4
5
use Illuminate\Support\Str;
6
use Illuminate\Support\Facades\File;
7
use Mtolhuys\LaravelSchematics\Actions\Migration\Traits\CreatesMigrations;
8
use Mtolhuys\LaravelSchematics\Services\StubWriter;
9
10
class CreateRelationMigrationAction
11
{
12
    use CreatesMigrations;
13
14
    /**
15
     * @param $request
16
     * @return void
17
     */
18
    public function execute($request)
19
    {
20
        $source = app($request['source'])->getTable();
21
        $target = app($request['target'])->getTable();
22
        $foreignKey = $this->getForeignKey($request);
23
        $stub = __DIR__ . '/../../../resources/stubs/migration/relation.stub';
24
        $this->filename = 'database/migrations/'
25
            . date('Y_m_d_His')
26
            . "_create_{$source}_{$target}_relation.php";
27
28
        (new StubWriter(base_path($this->filename), $stub))->write([
29
            '$column$' => "\$table->foreign('$foreignKey')->references('{$this->getLocalKey($request)}')->on('$target');",
30
            '$classname$' => 'Create' . ucfirst(Str::camel($source)) . ucfirst(Str::camel($target)) . 'Relation',
31
            '$foreignKey$' => $foreignKey,
32
            '$source$' => $source,
33
            '$target$' => $target,
34
        ]);
35
    }
36
}
37