byHash($hash)->firstOrFail(); } public static function byHash($hash): ?self { return self::query()->byHash($hash)->first(); } /** * Get HashId column name. */ public function getHashColumnName(): string { return property_exists($this, 'hashColumnName') ? $this->hashColumnName : self::HASHID_COLUMN_NAME; } public function getHashAttribute(): ?string { return $this->exists ? $this->idToHash($this->getKey()) : null; } public function scopeByHash(Builder $query, string $hash): Builder { return $query->where($this->getQualifiedKeyName(), unhash_it($hash)); } public function resolveRouteBinding($value, $field = null) { if ($field || is_numeric($value)) { return parent::resolveRouteBinding($value, $field); } return $this->byHash($value); } }