coderscantina/hashidable

An adapted bridge for using hashids in Laravel models.
5,072
Install
composer require coderscantina/hashidable
Latest Version:v1.1.1
PHP:~7.3||^8.0
License:MIT
Last Updated:Apr 29, 2026
Links: GitHub  ·  Packagist
Maintainer: badmike

Hashidable from Coder's Cantina

Laravel Compatibility

An adapted bridge for using laravel-hashids in Laravel models.

Features

  • Hashid route model binding
  • Individual salt per model
  • Optional individual configuration per model
  • Helper methods for encoding, decoding and finding by hashid
  • Collection support for working with multiple hashids
  • Performance optimizations with factory caching

🏗 Install

Install the package via composer using this command:

composer require coderscantina/hashidable

⚙️ Usage

Add the Hashidable trait to your model

use CodersCantina\Hashidable;

class Foo extends Model
{
    use Hashidable;
}

Route Model Binding

Expose the hashid in a resource

class FooResource extends JsonResource
{
    /**
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'id' => $this->getRouteKey(),
        ];
    }
}

Resolve the model via hashid in a controller

/**
* @param  \App\Models\Foo  $foo
* @return \Illuminate\Http\Response
*/
public function show(Foo $foo)
{
    return new FooResource($foo);
}

Working with Single Models/IDs

Static methods to work with hashIds:

Foo::encodeHashId(1);             // Convert ID to hashid
Foo::decodeHashId('A3');          // Convert hashid to ID
Foo::findByHashId('A3');          // Find model by hashid
Foo::findByHashIdOrFail('A3');    // Find model by hashid or throw exception

Working with Collections/Arrays

Methods for working with multiple models or IDs:

// Encode multiple IDs
Foo::encodeHashIds([1, 2, 3]);    // Returns array of hashids

// Decode multiple hashids
Foo::decodeHashIds(['A3', 'B7']); // Returns array of IDs

// Find multiple models by hashids
Foo::findByHashIds(['A3', 'B7']); // Returns collection of models

Custom Configuration

Overwrite config with a model like App\User::class

# config/hashids.php

'connections' => [

    'main' => [
        'salt' => env('HASHIDS_SALT'),
        'length' => 8,
        'alphabet' => '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
    ],

    \App\User::class => [
        'salt' => env('HASHIDS_SALT'),
        'length' => 5,
        'alphabet' => '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
    ],

],

See for more information Route Model Binding

Related Packages

vinkla/hashids

A Hashids bridge for Laravel

15,130,393 2,054
lanin/laravel-hashids

Integrate Hashids with Laravel.

392 10
cybercog/laravel-optimus

An Optimus bridge for Laravel. Id obfuscation based on Knuth's multiplicative ha...

589,267 193
naabster/laravel-eloquent-hashids

Automatically generate hashids in Laravel for a new Eloquent Model.

7,045 16
lingxi/hashids

A Hashids bridge for Laravel

3,312 18