-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathHasAugmentedModel.php
63 lines (49 loc) · 1.4 KB
/
HasAugmentedModel.php
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
<?php
namespace App\Libraries\Api\Models\Behaviors;
trait HasAugmentedModel
{
protected $augmented = false;
protected $augmentedModel;
protected $augmentedModelClass;
public function setAugmentedModel($model)
{
$this->augmentedModel = $model;
$this->augmented = true;
}
public function getAugmentedModelClass()
{
return $this->augmentedModelClass;
}
public function getAugmentedModel()
{
if (!$this->augmented) {
return;
}
if ($this->augmentedModel) {
return $this->augmentedModel;
}
$this->augmentedModel = $this->augmentedModelClass::where('datahub_id', $this->id)->first();
if (!$this->augmentedModel) {
$this->augmented = false;
}
return $this->augmentedModel;
}
public function hasAugmentedModel()
{
return $this->augmented;
}
/**
* Bypass missed methods to the augmented model if existent
*
*/
public function __call($method, $parameters): mixed
{
if (method_exists($this, $method)) {
return $this->{$method}($parameters);
}
if ($this->hasAugmentedModel() && $this->getAugmentedModel() && method_exists($this->getAugmentedModel(), $method)) {
return $this->getAugmentedModel()->{$method}(...$parameters);
}
return null;
}
}