PHP & Laravel

Eloquent Tokenable

Allows using tokens (HashIDs) instead of id in Laravel Eloquent models.
GitHub RepositoryReleasesPackagist

Requirements

  • PHP ^8.3
  • Laravel ^13.0

Installation

composer require kduma/eloquent-tokenable

Setup

Add the Tokenable trait to your model:

use KDuma\Eloquent\Tokenable;

class Order extends Model
{
    use Tokenable;
}

Configuration

use KDuma\Eloquent\Tokenable;
use KDuma\Eloquent\Attributes\HasToken;

#[HasToken(length: 12, alphabet: 'abcdef1234567890')]
class Order extends Model
{
    use Tokenable;
}

HasToken parameters: length (default: 10), alphabet (default: alphanumeric), salt (default: table name).

Old style — model properties (deprecated)

class Order extends Model
{
    use Tokenable;

    protected ?string $salt = 'SALT';       // ⚠️ deprecated
    protected int $length = 10;             // ⚠️ deprecated
    protected string $alphabet = 'abc...';  // ⚠️ deprecated
}

Usage

  • $model->token — returns the HashID token
  • Model::whereToken($token) — query scope to find by token
Copyright © 2026