Issues (214)

src/Model/MemberDef.php (1 issue)

Labels
Severity
1
<?php
2
3
namespace Siak\Tontine\Model;
4
5
use Database\Factories\MemberFactory;
6
use Illuminate\Database\Eloquent\Factories\Factory;
7
use Illuminate\Database\Eloquent\Factories\HasFactory;
8
use Illuminate\Database\Eloquent\Builder;
9
use Illuminate\Support\Facades\DB;
10
11
class MemberDef extends Base
12
{
13
    use HasFactory;
0 ignored issues
show
The trait Illuminate\Database\Eloquent\Factories\HasFactory requires the property $factoryClass which is not provided by Siak\Tontine\Model\MemberDef.
Loading history...
14
15
    /**
16
     * Indicates if the model should be timestamped.
17
     *
18
     * @var bool
19
     */
20
    public $timestamps = false;
21
22
    /**
23
     * The attributes that are mass assignable.
24
     *
25
     * @var array
26
     */
27
    protected $fillable = [
28
        'name',
29
        'email',
30
        'phone',
31
        'address',
32
        'city',
33
        'registered_at',
34
        'active',
35
    ];
36
37
    /**
38
     * Get the attributes that should be cast.
39
     *
40
     * @return array<string, string>
41
     */
42
    protected function casts(): array
43
    {
44
        return [
45
            'registered_at' => 'datetime',
46
        ];
47
    }
48
49
    /**
50
     * Create a new factory instance for the model.
51
     *
52
     * @return Factory
53
     */
54
    protected static function newFactory()
55
    {
56
        return MemberFactory::new();
57
    }
58
59
    public function guild()
60
    {
61
        return $this->belongsTo(Guild::class);
62
    }
63
64
    public function members()
65
    {
66
        return $this->hasMany(Member::class, 'def_id');
67
    }
68
69
    /**
70
     * @param  Builder  $query
71
     * @param  bool     $active
72
     *
73
     * @return Builder
74
     */
75
    public function scopeActive(Builder $query, bool $active = true): Builder
76
    {
77
        return $query->where('active', $active);
78
    }
79
80
    /**
81
     * @param  Builder  $query
82
     * @param  string $search
83
     *
84
     * @return Builder
85
     */
86
    public function scopeSearch(Builder $query, string $search): Builder
87
    {
88
        return $query
89
            ->when($search !== '', fn($q) => $q
90
                ->where(DB::raw('lower(name)'), 'like', "%{$search}%"));
91
    }
92
}
93