hasMany(Price::class); } public function isStarred(): bool { return (bool) $this->starred; } public function currentPrice(): HasOne { return $this->hasOne(Price::class)->latestOfMany('created_at'); } public function stock(): HasMany { return $this->hasMany(Stock::class); } public function toggleStarred(): self { $this->starred = !$this->starred; return $this; } public function categories(): Attribute { return Attribute::make( get: fn(string $value) => array_reverse(json_decode($value, 1)), set: fn(array $value) => json_encode($value), ); } }