44 lines
927 B
PHP
44 lines
927 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', 'description', 'icon'];
|
|
|
|
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');
|
|
}
|
|
}
|
|
|