'array', ]; protected static function booted(): void { if (Auth::check() && !Auth::user()->super_admin) { static::addGlobalScope(new CompanyScope); } } public function createdBy(): BelongsTo { return $this->belongsTo(User::class, "created_by"); } public function folder(): BelongsTo { return $this->belongsTo(Folder::class); } public function container() { return $this->belongsTo(Container::class, 'object_id')->where('object_type', FileObjectType::CONTAINER->value); } public function containerLibrary() { return $this->hasOneThrough(Library::class, Container::class, 'id', 'id', 'object_id', 'library_id') ->where('object_type', FileObjectType::CONTAINER->value); } public function bimFile(): \Illuminate\Database\Eloquent\Relations\HasOne { return $this->hasOne(BimFile::class); } public function scopeFolderId($query, int $folderId = 0) { if ($folderId > 0) { return $query->where('folder_id', $folderId); } } // 某个容器库的文件 public function scopeContainerLibraryId($query, int $libraryId = 0) { return $query->whereHas('container', function ($query) use ($libraryId) { if ($libraryId > 0) { return $query->where('library_id', $libraryId); } }); } // 某个容器的文件 public function scopeContainerId($query, int $containerId = 0) { return $query->whereHas('container', function ($query) use ($containerId) { if ($containerId > 0) { return $query->where('id', $containerId); } }); } // 某个资产的文件 public function scopeAssetId($query, int $assetId = 0) { return $query->whereHas('containerLibrary', function ($query) use ($assetId) { if ($assetId > 0) { return $query->where('asset_id', $assetId); } }); } // 某个项目的文件 public function scopeProjectId($query, int $projectId = 0) { return $query->whereHas('containerLibrary', function ($query) use ($projectId) { if ($projectId > 0) { return $query->where('project_id', $projectId); } }); } public function scopeKeyword($query, string $keyword = '') { if (!empty($keyword)) { return $query->where('title', 'like', '%' . $keyword . '%'); } } public function namingRule(): BelongsTo { return $this->belongsTo(NamingRule::class); } }