// AppServiceProvider::boot()
use Illuminate\Database\Eloquent\Relations\Relation;
Relation::enforceMorphMap([
'user' => \App\Models\User::class,
]);
namespace App\Support;
use Webminty\FeatureRequests\Contracts\IdCodec;
final class SqidsIdCodec implements IdCodec
{
public function __construct(private readonly \Sqids\Sqids $sqids) {}
public function encode(int $id): string
{
return $this->sqids->encode([$id]);
}
public function decode(string $value): ?int
{
$decoded = $this->sqids->decode($value);
return count($decoded) === 1 ? $decoded[0] : null;
}
}
// AppServiceProvider::register()
$this->app->singleton(\Webminty\FeatureRequests\Contracts\IdCodec::class, function () {
return new \App\Support\SqidsIdCodec(new \Sqids\Sqids(minLength: 8));
});