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 }