Completed
Push — master ( ff35ff...cb4013 )
by ARCANEDEV
05:05
created

EloquentTrait::getArrayableRelations()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 8
ccs 0
cts 4
cp 0
rs 9.4285
cc 1
eloc 4
nc 1
nop 0
crap 2
1
<?php namespace Arcanedev\LaravelNestedSet\Traits;
2
3
use Arcanedev\LaravelNestedSet\Eloquent\Collection;
4
use Arcanedev\LaravelNestedSet\Eloquent\QueryBuilder;
5
6
/**
7
 * Class     EloquentTrait
8
 *
9
 * @package  Arcanedev\LaravelNestedSet\Traits
10
 * @author   ARCANEDEV <[email protected]>
11
 */
12
trait EloquentTrait
13
{
14
    /* ------------------------------------------------------------------------------------------------
15
     |  Required Functions
16
     | ------------------------------------------------------------------------------------------------
17
     */
18
    /**
19
     * Get the database connection for the model.
20
     *
21
     * @return \Illuminate\Database\Connection
22
     */
23
    abstract public function getConnection();
24
25
    /**
26
     * Get the table associated with the model.
27
     *
28
     * @return string
29
     */
30
    abstract public function getTable();
31
32
    /**
33
     * Get the value of the model's primary key.
34
     *
35
     * @return mixed
36
     */
37
    abstract public function getKey();
38
39
    /**
40
     * Get the primary key for the model.
41
     *
42
     * @return string
43
     */
44
    abstract public function getKeyName();
45
46
    /**
47
     * Get a plain attribute (not a relationship).
48
     *
49
     * @param  string  $key
50
     *
51
     * @return mixed
52
     */
53
    abstract public function getAttributeValue($key);
54
55
    /**
56
     * Set the array of model attributes. No checking is done.
57
     *
58
     * @param  array  $attributes
59
     * @param  bool   $sync
60
     *
61
     * @return self
62
     */
63
    abstract public function setRawAttributes(array $attributes, $sync = false);
64
65
    /**
66
     * Set the specific relationship in the model.
67
     *
68
     * @param  string  $relation
69
     * @param  mixed   $value
70
     *
71
     * @return self
72
     */
73
    abstract public function setRelation($relation, $value);
74
75
    /**
76
     * Get a relationship.
77
     *
78
     * @param  string  $key
79
     *
80
     * @return mixed
81
     */
82
    abstract public function getRelationValue($key);
83
84
    /**
85
     * Create a new instance of the given model.
86
     *
87
     * @param  array  $attributes
88
     * @param  bool   $exists
89
     *
90
     * @return self
91
     */
92
    abstract public function newInstance($attributes = [], $exists = false);
93
94
    /**
95
     * Determine if the model or given attribute(s) have been modified.
96
     *
97
     * @param  array|string|null  $attributes
98
     *
99
     * @return bool
100
     */
101
    abstract public function isDirty($attributes = null);
102
103
    /**
104
     * Fill the model with an array of attributes.
105
     *
106
     * @param  array  $attributes
107
     *
108
     * @return self
109
     *
110
     * @throws \Illuminate\Database\Eloquent\MassAssignmentException
111
     */
112
    abstract public function fill(array $attributes);
113
114
    /**
115
     * Save the model to the database.
116
     *
117
     * @param  array  $options
118
     *
119
     * @return bool
120
     */
121
    abstract public function save(array $options = []);
122
123
    /**
124
     * Get a new query builder for the model's table.
125
     *
126
     * @return \Illuminate\Database\Eloquent\Builder
127
     */
128
    abstract public function newQuery();
129
130
    /* ------------------------------------------------------------------------------------------------
131
     |  Overrided Functions
132
     | ------------------------------------------------------------------------------------------------
133
     */
134
    /**
135
     * Create a new Eloquent query builder for the model.
136
     *
137
     * @param  \Illuminate\Database\Query\Builder  $query
138
     *
139
     * @return \Arcanedev\LaravelNestedSet\Eloquent\QueryBuilder
140
     */
141 280
    public function newEloquentBuilder($query)
142
    {
143 280
        return new QueryBuilder($query);
144
    }
145
146
    /**
147
     * Create a new Eloquent Collection instance.
148
     *
149
     * @param  array  $models
150
     *
151
     * @return \Arcanedev\LaravelNestedSet\Eloquent\Collection
152
     */
153 228
    public function newCollection(array $models = [])
154
    {
155 228
        return new Collection($models);
156
    }
157
158
    /**
159
     * Get an attribute array of all arrayable relations.
160
     *
161
     * @return array
162
     */
163
    protected function getArrayableRelations()
164
    {
165
        $result = parent::getArrayableRelations();
166
167
        unset($result['parent']);
168
169
        return $result;
170
    }
171
}
172