'string', 'full_name' => 'string', ]; public function assetPrices(): HasMany { return $this->hasMany(Pricing\AssetPrice::class); } public function users(): HasMany { return $this->hasMany(User::class); } public function currentPrice(): ?float { $latestPrice = $this->assetPrices()->latest('date')->first(); return $latestPrice ? $latestPrice->price : null; } public static function findBySymbol(string $symbol): ?self { return static::where('symbol', strtoupper($symbol))->first(); } public static function findOrCreateBySymbol(string $symbol, ?string $fullName = null): self { $asset = static::findBySymbol($symbol); if (! $asset) { $asset = static::create([ 'symbol' => strtoupper($symbol), 'full_name' => $fullName, ]); } return $asset; } }