*/ protected $fillable = [ Page::ATTRIBUTE_BODY, Page::ATTRIBUTE_NAME, Page::ATTRIBUTE_SLUG, ]; /** * The attributes that should be hidden for serialization. * * @var array */ protected $hidden = [ Page::ATTRIBUTE_BODY, ]; /** * The event map for the model. * * Allows for object-based events for native Eloquent events. * * @var array */ protected $dispatchesEvents = [ 'created' => PageCreated::class, 'deleted' => PageDeleted::class, 'restored' => PageRestored::class, 'updated' => PageUpdated::class, ]; /** * The table associated with the model. * * @var string */ protected $table = Page::TABLE; /** * The primary key associated with the table. * * @var string */ protected $primaryKey = Page::ATTRIBUTE_ID; /** * Get the route key for the model. * * @return string * * @noinspection PhpMissingParentCallCommonInspection */ public function getRouteKeyName(): string { return Page::ATTRIBUTE_SLUG; } /** * Get name. * * @return string */ public function getName(): string { return $this->name; } /** * Get subtitle. * * @return string */ public function getSubtitle(): string { return $this->slug; } /** * Get the sections available on db. * * @return array */ public static function getSections(): array { $pages = static::query()->get(static::ATTRIBUTE_SLUG)->toArray(); $slugs = array_map(fn ($slug) => $slug[static::ATTRIBUTE_SLUG], $pages); $sections = []; foreach ($slugs as $slug) { $lastSlash = strrpos($slug, '/'); $value = $lastSlash ? substr($slug, 0, $lastSlash) : $slug; $sections[$value] = $value; } ksort($sections); return $sections; } }