This example provides a quick and simple method to generate a hash for a model without saving a UUID/GUID to the database.
<?php
/**
* Attach a hash to the user model. This way we dont need a UUID/GUID. Keep
* in mind that the HASH will change every time when you instantiate the
* User model
*
* Class User
*/
class User extends Model
{
protected $appends = [ 'hash' ];
/**
* @return string
*/
public function getHashAttribute()
{
return encrypt( $this->id );
}
}
?>
<?php
# Route
Route::get( 'user/{user_hash}/show', [
'as' => 'user.show',
'uses' => 'UserController@show'
] );
# Model Binding
/**
* @throws \Illuminate\Contracts\Encryption\DecryptException
*/
app( 'router' )->bind( 'user_hash', function ( $hash ) {
return app( User::class )->findOrFail( decrypt( $hash ) );
} );
?>
<!-- Create a link -->
<a href="{{route('user.show', [$user->hash])}}">Edit</a>