Files
back-meditation/app/Models/Category.php
T
2026-06-27 10:13:59 +03:30

48 lines
999 B
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
public const TYPE_MEDIA = 'media';
public const TYPE_PLAYLIST = 'playlist';
public const TYPE_BREATHING_TEMPLATE = 'breathing_template';
public const TYPES = [
self::TYPE_MEDIA,
self::TYPE_PLAYLIST,
self::TYPE_BREATHING_TEMPLATE,
];
protected $fillable = ['name', 'type', 'order', 'description', 'icon'];
protected $casts = [
'order' => 'integer',
];
protected $appends = ['icon_url'];
public function getIconUrlAttribute(): ?string
{
return $this->icon ? asset('storage/' . $this->icon) : null;
}
public function questions()
{
return $this->hasMany(Question::class);
}
public function subcategories()
{
return $this->hasMany(SubCategory::class);
}
public function media()
{
return $this->belongsToMany(Media::class, 'category_media');
}
}