ManyTo::getNamingStrategy()
last analyzed

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 1
ccs 0
cts 0
cp 0
nc 1
1
<?php
2
3
namespace LaravelDoctrine\Fluent\Relations\Traits;
4
5
use LaravelDoctrine\Fluent\Relations\JoinColumn;
6
7
trait ManyTo
8
{
9
    /**
10
     * @var JoinColumn[]
11
     */
12
    protected $joinColumns = [];
13
14
    /**
15
     * Build the association
16
     */
17 68
    public function build()
18
    {
19 68
        foreach ($this->getJoinColumns() as $column) {
20 43
            $this->getAssociation()->addJoinColumn(
21 43
                $column->getJoinColumn(),
22 43
                $column->getReferenceColumn(),
23 43
                $column->isNullable(),
24 43
                $column->isUnique(),
25 43
                $column->getOnDelete()
26 43
            );
27 68
        }
28
29 68
        parent::build();
30 67
    }
31
32
    /**
33
     * @param string      $relation
34
     * @param string|null $joinColumn
35
     * @param string|null $referenceColumn
36
     * @param bool|false  $nullable
37
     * @param bool|false  $unique
38
     * @param string|null $onDelete
39
     *
40
     * @return $this
41
     */
42 55
    public function addJoinColumn(
43
        $relation,
44
        $joinColumn = null,
45
        $referenceColumn = null,
46
        $nullable = false,
47
        $unique = false,
48
        $onDelete = null
49
    ) {
50 55
        $joinColumn = new JoinColumn(
51 55
            $this->getNamingStrategy(),
52 55
            $relation,
53 55
            $joinColumn,
54 55
            $referenceColumn,
55 55
            $nullable,
56 55
            $unique,
57
            $onDelete
58 55
        );
59
60 55
        $this->pushJoinColumn($joinColumn);
61
62 55
        return $this;
63
    }
64
65
    /**
66
     * @param JoinColumn $column
67
     */
68 55
    protected function pushJoinColumn(JoinColumn $column)
69
    {
70 55
        $this->joinColumns[] = $column;
71 55
    }
72
73
    /**
74
     * @return JoinColumn[]
75
     */
76 70
    public function getJoinColumns()
77
    {
78 70
        return $this->joinColumns;
79
    }
80
81
    /**
82
     * @return \Doctrine\ORM\Mapping\Builder\AssociationBuilder
83
     */
84
    abstract public function getAssociation();
85
86
    /**
87
     * @return \Doctrine\ORM\Mapping\NamingStrategy
88
     */
89
    abstract public function getNamingStrategy();
90
}
91