50 lines
1.0 KiB
PHP
50 lines
1.0 KiB
PHP
|
|
<?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;
|
||
|
|
}
|
||
|
|
}
|