Completed
Push — master ( 872a00...e2f753 )
by Troy
01:33
created

BaseTenant::setFillable()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 10
rs 9.9332
cc 1
nc 1
nop 0
1
<?php
2
3
namespace MultiTenantLaravel\App\Models;
4
5
use Illuminate\Database\Eloquent\Model;
6
7
abstract class BaseTenant extends Model
8
{
9
    /**
10
     * Construct the model with the provided config settings
11
     * or use our fallbacks if none are provided
12
     */
13
    public function __construct(array $attributes = [])
14
    {
15
        $this->setTable(config('multi-tenant.table_name'));
16
17
        $this->setFillable();
18
19
        // parent construct must go below property customizations
20
        parent::__construct($attributes);
21
    }
22
23
    /**
24
     *  Merge the fillable fields with any provided in the extending class
25
     */
26
    public function setFillable()
27
    {
28
        $fillable = [
29
            'owner_id',
30
            'slug',
31
            'name'
32
        ];
33
34
        $this->fillable(array_merge($this->fillable, $fillable));
35
    }
36
37
    /**
38
     *  Merge the fillable fields with any provided in the extending class
39
     */
40
    public function owner()
41
    {
42
        return $this->belongsTo(config('multi-tenant.user_class'), 'owner_id');
43
    }
44
45
    /**
46
     *  The features relationship
47
     */
48
    public function features()
49
    {
50
        return $this->belongsToMany(config('multi-tenant.feature_class'));
51
    }
52
53
54
    /**
55
     *  The features relationship
56
     */
57
    public function assignFeature(BaseFeature $feature)
58
    {
59
        return $this->features()->syncWithoutDetaching($feature);
60
    }
61
62
    /**
63
     *  The features relationship
64
     */
65
    public function hasFeature(BaseFeature $feature)
66
    {
67
        return $this->features()->where('feature_id', $feature->id)->exists();
68
    }
69
}
70