RequirementGroup.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace App\Models;
  3. use App\Http\Requests\IndexHelper;
  4. use App\Models\Enums\DisplayIndexObjectType;
  5. use App\Models\Scopes\CompanyScope;
  6. use EloquentFilter\Filterable;
  7. use Illuminate\Database\Eloquent\Factories\HasFactory;
  8. use Illuminate\Database\Eloquent\Model;
  9. use Illuminate\Database\Eloquent\SoftDeletes;
  10. class RequirementGroup extends Model
  11. {
  12. use HasFactory,Filterable,SoftDeletes;
  13. protected $fillable = [
  14. 'name', 'abbr_name', 'asset_id','parent_id','company_id'
  15. ];
  16. protected static function booted(): void
  17. {
  18. static::addGlobalScope(new CompanyScope);
  19. static::creating(function (RequirementGroup $requirementGroup){
  20. $type =DisplayIndexObjectType::REQUIREMENTGROUP;
  21. $displayIndex = IndexHelper::getObjectMaxIndex($type);
  22. $requirementGroup->display_id =$displayIndex;
  23. });
  24. }
  25. public function children()
  26. {
  27. return $this->hasMany(RequirementGroup::class, 'parent_id');
  28. }
  29. public function parent()
  30. {
  31. return $this->belongsTo(RequirementGroup::class, 'parent_id');
  32. }
  33. public function requirement(){
  34. return $this->hasMany(Requirement::class,'requirement_group_id');
  35. }
  36. public function asset()
  37. {
  38. return $this->belongsTo(Asset::class, 'asset_id');
  39. }
  40. }