/ app / Models / Norm.php
Norm.php
 1  <?php
 2  
 3  namespace App\Models;
 4  
 5  use Illuminate\Database\Eloquent\Casts\Attribute;
 6  use Illuminate\Database\Eloquent\Factories\HasFactory;
 7  use Illuminate\Database\Eloquent\Model;
 8  use Illuminate\Database\Eloquent\SoftDeletes;
 9  use Spatie\Activitylog\LogOptions;
10  use Spatie\Activitylog\Traits\LogsActivity;
11  
12  class Norm extends Model
13  {
14      use HasFactory, LogsActivity, SoftDeletes;
15  
16      protected $guarded = [];
17      protected $with = ['workbooks', 'norm_scopes'];
18  
19      public function resolutions()
20      {
21          return $this->belongsToMany(Resolution::class, 'norm_resolution', 'norm_id', 'resolution_id');
22      }
23  
24      public function name(): Attribute
25      {
26          return Attribute::make(
27              get: fn () => $this->normGroup->name . ' ' . $this->version
28          );
29      }
30  
31      public function workbooks()
32      {
33          return $this->hasMany(Workbook::class);
34      }
35  
36      public function norm_scopes()
37      {
38          return $this->hasMany(NormScope::class);
39      }
40  
41      public function normScopes()
42      {
43          return $this->hasMany(NormScope::class);
44      }
45  
46      public function scopes()
47      {
48          return $this->hasMany(NormScope::class);
49      }
50  
51      public function normGroup()
52      {
53          return $this->belongsTo(NormGroup::class);
54      }
55  
56      public function validationTypes()
57      {
58          return $this->hasMany(ValidationType::class);
59      }
60  
61      public function getActivitylogOptions(): LogOptions
62      {
63          return LogOptions::defaults()
64              ->logOnly(['name', 'description', 'norm_group_id', 'normGroup.name'])
65              ->logOnlyDirty()
66              ->dontSubmitEmptyLogs();
67      }
68  }