Completed
Push — master ( cb1113...b09b3a )
by Maarten
16s queued 11s
created

CreateRelationMigrationAction   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 1
lcom 1
cbo 3
dl 0
loc 33
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A execute() 0 24 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
9
class CreateRelationMigrationAction
10
{
11
    use CreatesMigrations;
12
13
    /**
14
     * @param $request
15
     * @return void
16
     */
17
    public function execute($request)
18
    {
19
        $source = app($request['source'])->getTable();
20
        $target = app($request['target'])->getTable();
21
        $foreignKey = $this->getForeignKey($request);
22
        $stub = __DIR__ . '/../../../resources/stubs/migration/relation.stub';
23
        $this->filename = 'database/migrations/'
24
            . date('Y_m_d_His')
25
            . "_create_{$source}_{$target}_relation.php";
26
27
        File::put(base_path($this->filename), str_replace([
28
            '$source$',
29
            '$target$',
30
            '$classname$',
31
            '$column$',
32
            '$foreignKey$'
33
        ], [
34
            $source,
35
            $target,
36
            'Create' . ucfirst(Str::camel($source)) . ucfirst(Str::camel($target)) . 'Relation',
37
            "\$table->foreign('$foreignKey')->references('{$this->getLocalKey($request)}')->on('$target');",
38
            $foreignKey
39
        ], File::get($stub)));
40
    }
41
}
42