netsells/hash-model-ids
| Install | |
|---|---|
composer require netsells/hash-model-ids |
|
| Latest Version: | v2.0.0 |
| PHP: | ^8.2 |
| Laravel: | 10 · 11 |
| Older releases: | 9 |
| License: | MIT |
| Last Updated: | Mar 28, 2024 |
| Links: | GitHub · Packagist |
Hash Model Ids
Dynamically create a hash of an Eloquent model id value to avoid exposing a record's actual database id.
Features
use Netsells\HashModelIds\HashesModelIdsTrait;
class Model extends BaseModel
{
use HashesModelIdsTrait;
}
Use the HashesModelIdsTrait in an Eloquent model to enable the following functionality:
- Access a model's hashed id value:
$model->hashed_id - Filter a model by an array of or a single hashed id:
Model::whereHashedId($hashedId)Model::whereHashedIds($hashedIds)
- Define routes with models bound by their hashed id:
Route::get('models/{model}', function (Model $model) { return $model; }); $url = url("models/$model->hashed_id"); - Check for model existence in form request classes using a bespoke rule, optionally including additional chained constraints:
public function rules() { return [ 'hashed_id' => [ ExistsWithHashedIdRule::make(Model::class) ->where(function ($query) { $query->where('type', 'test'); }) ->where('foo', 'bar'), ], ]; }
Installation
Install the package with:
composer require netsells/hash-model-ids
Publish the package config file:
php artisan vendor:publish --tag=hash-model-ids-config
Optionally set a HASH_MODEL_IDS_SALT in .env.
Translations
Publish the package translations file:
php artisan vendor:publish --tag=hash-model-ids-lang
Development
Sometimes, during development, it can be awkward dealing with hashed ids. Set HASH_MODEL_IDS_ENABLED=false in your environment file to enable use of a (configurable) prefixed version of a model's actual id rather than the default hashed version.
Testing
./vendor/bin/phpunit
Related Packages
Allows using tokens (HashIDs) instead of id in Laravel Eloquent models.
Allows using tokens (HashIDs) instead of id in Laravel Eloquent models.
Automatically generate hashids in Laravel for a new Eloquent Model.
Obfuscate incrementing IDs with Sqids for Laravel and Eloquent.
Automatically generate hashids in Laravel for a new Eloquent Model.
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| v2.0.0 | ^8.2 | ^10.0| | MIT | |
| v1.2.0 | ^8.1 | ^9.1 || | MIT | |
| v1.1.1 | ^8.1 | ^9.1 || | MIT | |
| v1.1.0 | ^8.1 | ^9.1 | MIT | |
| v1.0.0 | ^8.1 | ^9.1 | MIT |