$furniItems * @property-read Permission|null $rank * @property-read \Illuminate\Database\Eloquent\Collection $features * @property-read float|int $price * * @method static \Illuminate\Database\Eloquent\Builder|WebsiteShopArticle orderBy($column, $direction = 'asc') * @method static \Illuminate\Database\Eloquent\Builder|WebsiteShopArticle get($columns = ['*']) * @method static \Illuminate\Database\Eloquent\Builder|WebsiteShopArticle with($relations) */ class WebsiteShopArticle extends Model { use HasFactory; protected static function newFactory() { return WebsiteShopArticleFactory::new(); } #[\Override] protected $guarded = ['id', 'created_at', 'updated_at', 'price', 'credits', 'duckets', 'diamonds', 'give_rank', 'badges', 'furniture', 'is_giftable']; public function furniItems(): Collection { if (! $this->furniture) { return collect(); } $furniture = json_decode($this->furniture, true); $furnitureIds = array_column($furniture, 'item_id'); return ItemBase::query()->whereIn('id', $furnitureIds)->get(); } public function rank(): HasOne { return $this->hasOne(Permission::class, 'id', 'give_rank'); } public function features(): HasMany { return $this->HasMany(WebsiteShopArticleFeature::class, 'article_id', 'id'); } public function price(): float|int { if ($this->costs < 100) { return 1; } return $this->costs / 100; } }