Folder.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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\Relations\BelongsTo;
  8. use Illuminate\Database\Eloquent\Relations\HasMany;
  9. use Illuminate\Database\Eloquent\Relations\HasOneThrough;
  10. use Illuminate\Database\Eloquent\SoftDeletes;
  11. use Illuminate\Support\Facades\Schema;
  12. class Folder extends Model
  13. {
  14. use HasFactory, SoftDeletes;
  15. protected $guarded = ['id'];
  16. private mixed $children;
  17. public static function getColumns(): array
  18. {
  19. return Schema::getColumnListing((new self)->getTable());
  20. }
  21. protected static function booted(): void
  22. {
  23. static::addGlobalScope(new CompanyScope);
  24. }
  25. public function files()
  26. {
  27. return $this->hasMany(File::class)->orderByDesc("version");
  28. }
  29. public function namingRule(): BelongsTo
  30. {
  31. return $this->belongsTo(NamingRule::class);
  32. }
  33. public function parent(): BelongsTo
  34. {
  35. return $this->belongsTo(Folder::class, 'parent_id');
  36. }
  37. public function children(): HasMany
  38. {
  39. return $this->hasMany(Folder::class, 'parent_id');
  40. }
  41. public function container(): BelongsTo
  42. {
  43. return $this->belongsTo(Container::class, 'object_id');
  44. }
  45. public function library(): HasOneThrough
  46. {
  47. return $this->hasOneThrough(Library::class, Container::class, 'id', 'id', 'object_id', 'library_id');
  48. }
  49. public function createdBy(): BelongsTo
  50. {
  51. return $this->belongsTo(User::class, "created_by");
  52. }
  53. public function updatedBy(): BelongsTo
  54. {
  55. return $this->belongsTo(User::class, "updated_by");
  56. }
  57. }