'datetime:Y-m-d H:i:s', 'updated_at' => 'datetime:Y-m-d H:i:s', ]; protected static function booted(): void { static::addGlobalScope(new CompanyScope); } public function scopeAllowed(Builder $query): void { $query->where(function (Builder $query) { return $query->where('acl', AssetACL::PRIVATE->value)->where('owner', Auth::id()); })->orWhere(function (Builder $query) { return $query->where('acl', AssetACL::CUSTOM->value)->where('whitelist', 'like', '%,' . Auth::id() . ',%'); })->orWhere(function (Builder $query) { return $query->where('acl', AssetACL::PRIVATE->value)->where('created_by', Auth::id()); }); } public function children(){ return $this->hasMany(Asset::class ,'parent_id'); } public function parent(){ return $this->belongsTo(Asset::class ,'parent_id'); } public function requirementGroups(){ return $this->hasMany(RequirementGroup::class ,'asset_id'); } public function requirements(){ return $this->hasMany(Requirement::class ,'asset_id'); } public function plans(){ return $this->hasMany(Plan::class ,'asset_id'); } public function projects(){ return $this->belongsToMany(Project::class,'project_asset'); } //获取子级需求数量 public function getTotalRequirementsCountAttribute() { $childIds = []; Asset::where('path','like','%,'.$this->id.',%')->get('id')->each(function ($id)use (&$childIds){ $childIds[]=$id['id']; }); return Requirement::whereIn('asset_id',$childIds)->count(); } //获取子级计划数量 public function getTotalPlansCountAttribute() { $childIds = []; Asset::where('path','like','%,'.$this->id.',%')->get('id')->each(function ($id)use (&$childIds){ $childIds[]=$id['id']; }); return Plan::whereIn('asset_id',$childIds)->count(); } public function library(){ return $this->hasMany(Library::class ,'asset_id')->where('type', 'asset'); } public function createdBy(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class, 'created_by'); } public function byOwner(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class, 'owner'); } public function assetGroup(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(AssetGroup::class, 'group_id'); } public function projectRequirementsGroup(): \Illuminate\Database\Eloquent\Relations\BelongsToMany { return $this->belongsToMany(RequirementGroup::class, 'project_requirement'); } }