PHP & Laravel
Eloquent Tokenable
Allows using tokens (HashIDs) instead of id in Laravel Eloquent models.
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
New style — PHP Attribute (recommended)
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 tokenModel::whereToken($token)— query scope to find by token