Files
sam-manage/app/Models/Juil/PmisArchiveFolder.php

50 lines
1.0 KiB
PHP
Raw Normal View History

<?php
namespace App\Models\Juil;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
class PmisArchiveFolder extends Model
{
use SoftDeletes;
protected $fillable = [
'tenant_id',
'parent_id',
'name',
'sort_order',
'options',
];
protected $casts = [
'options' => 'array',
];
public function scopeTenant($query, $tenantId)
{
return $query->where('tenant_id', $tenantId);
}
public function children(): HasMany
{
return $this->hasMany(self::class, 'parent_id')->orderBy('sort_order');
}
public function files(): HasMany
{
return $this->hasMany(PmisArchiveFile::class, 'folder_id');
}
public function allDescendantIds(): array
{
$ids = [$this->id];
foreach ($this->children as $child) {
$ids = array_merge($ids, $child->allDescendantIds());
}
return $ids;
}
}