BaseModel.php
1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
/**
* Class BaseModel
* @package App\Models
*/
class BaseModel extends Model
{
use HasFactory;
/**
* @return string
*/
public static function table()
{
return (new static())->getTable();
}
/**
* @param Builder $builder
* @param array $params
* @return Builder
*/
public function scopeCustom(Builder $builder, array $params)
{
foreach ($params as $key => $value) {
$builder = $builder->when(filled($params[$key]), function ($query) use ($key, $value){
$query->where($key, $value);
});
}
return $builder;
}
/**
* @param Builder $builder
* @param array $params
* @return Builder|\Illuminate\Support\Traits\Conditionable|mixed
*/
public function scopeLike(Builder $builder, array $params)
{
foreach ($params as $key => $value) {
$builder = $builder->when(filled($params[$key]), function ($query) use ($key, $value){
$query->where($key, 'like', "%{$value}%");
});
}
return $builder;
}
/**
* @param Builder $builder
* @return Builder
*/
public function scopeIdentify(Builder $builder)
{
$builder = $builder->whereIn('stakeholder_id', request()->get('identifier')->identifier);
return $builder;
}
}