/ app / Models / Workbook.php
Workbook.php
 1  <?php
 2  
 3  namespace App\Models;
 4  
 5  use Illuminate\Database\Eloquent\Factories\HasFactory;
 6  use Illuminate\Database\Eloquent\Model;
 7  use Illuminate\Database\Eloquent\SoftDeletes;
 8  use Spatie\Activitylog\LogOptions;
 9  use Spatie\Activitylog\Traits\LogsActivity;
10  
11  class Workbook extends Model
12  {
13      use HasFactory, LogsActivity, SoftDeletes;
14  
15      protected $fillable = ['name', 'norm_id'];
16  
17      protected $with = ['normScope'];
18  
19      // public function workbookRequirements()
20      // {
21      //     return $this->hasMany(WorkbookRequirement::class);
22      // }
23  
24      public function norm()
25      {
26          return $this->belongsTo(Norm::class, 'norm_id');
27      }
28  
29      public function isInNorm(Norm $norm)
30      {
31          if (! $norm->workbooks) {
32              return false;
33          }
34  
35          $workbooks = $norm->workbooks->toArray();
36  
37          return in_array($this->id, array_column($workbooks, 'id'));
38      }
39  
40      public function normScope()
41      {
42          return $this->belongsToMany(NormScope::class, 'norm_scope_workbook', 'workbook_id', 'norm_scope_id');
43      }
44  
45      public function getActivitylogOptions(): LogOptions
46      {
47          return LogOptions::defaults()
48              ->logOnly(['name', 'norm_id', 'norm.name'])
49              ->logOnlyDirty()
50              ->dontSubmitEmptyLogs();
51      }
52  }