File.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace App\Models;
  3. use App\Models\Enums\FileObjectType;
  4. use App\Models\Scopes\CompanyScope;
  5. use Illuminate\Database\Eloquent\Factories\HasFactory;
  6. use Illuminate\Database\Eloquent\Model;
  7. use Illuminate\Database\Eloquent\SoftDeletes;
  8. use Illuminate\Support\Facades\Auth;
  9. use Predis\Command\Redis\SDIFF;
  10. class File extends Model
  11. {
  12. use HasFactory, SoftDeletes;
  13. protected $guarded = ['id'];
  14. protected static function booted(): void
  15. {
  16. if (Auth::check() && !Auth::user()->super_admin) {
  17. static::addGlobalScope(new CompanyScope);
  18. }
  19. }
  20. public function createdBy(): \Illuminate\Database\Eloquent\Relations\BelongsTo
  21. {
  22. return $this->belongsTo(User::class, "created_by");
  23. }
  24. public function folder(): \Illuminate\Database\Eloquent\Relations\BelongsTo
  25. {
  26. return $this->belongsTo(Folder::class);
  27. }
  28. public function container()
  29. {
  30. return $this->belongsTo(Container::class, 'object_id')->where('object_type', FileObjectType::CONTAINER->value);
  31. }
  32. public function bimFile(): \Illuminate\Database\Eloquent\Relations\HasOne
  33. {
  34. return $this->hasOne(BimFile::class);
  35. }
  36. // 某个容器库的文件
  37. public function scopeContainerLibraryId($query, int $libraryId = 0)
  38. {
  39. return $query->whereHas('container', function ($query) use ($libraryId) {
  40. if ($libraryId > 0) {
  41. return $query->where('library_id', $libraryId);
  42. }
  43. });
  44. }
  45. }