PHP code example of atldays / laravel-hashids

1. Go to this page and download the library: Download atldays/laravel-hashids library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

atldays / laravel-hashids example snippets




namespace App\Models;

use Atldays\HashIds\Concerns\HasHashId;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasHashId;
}

$user = User::findOrFail(123);

$user->getHashId();
$user->getHashIdInput();
$user->hash_id;

User::findByHashId($user->hash_id);
User::findOrFailByHashId($user->hash_id);

User::query()->whereHashId($user->hash_id)->first();



namespace App\Models;

use Atldays\HashIds\Concerns\HasHashId;
use Atldays\HashIds\Contracts\HasHashIdModel;
use Illuminate\Database\Eloquent\Model;

class User extends Model implements HasHashIdModel
{
    use HasHashId;
}

use Atldays\HashIds\Contracts\HasHashIdModel;
use Illuminate\Database\Eloquent\Model;

/**
 * @param Model&HasHashIdModel $model
 */
function exposeHashId(Model $model): ?string
{
    return $model->getHashId();
}

$value = $user->getHashIdInput();

$user = User::findByHashIdInput($value);

$user = User::findOrFail(123);

$user->hash_id;
$user->getHashId();
$user->getHashIdInput();

User::encodeHashId(123);
User::decodeHashId($user->hash_id);

User::findByHashId($hashId);
User::findOrFailByHashId($hashId);
User::findManyByHashId([$firstHashId, $secondHashId]);
User::findOrByHashId($hashId, fn () => null);
User::findOrNewByHashId($hashId);

User::findByHashIdInput($value);
User::findOrFailByHashIdInput($value);
User::findManyByHashIdInput([$firstValue, $secondValue]);

return [
    'id' => $user->getHashIdInput(),
];

User::query()->whereHashId($hashId)->first();
User::query()->whereHashIdNot($hashId)->get();

User::query()->whereHashIds([$firstHashId, $secondHashId])->get();
User::query()->whereHashIdsNot([$firstHashId, $secondHashId])->get();

User::query()->whereHashIdInput($value)->first();
User::query()->whereHashIdInputNot($value)->get();

User::query()->whereHashIdInputs([$firstValue, $secondValue])->get();
User::query()->whereHashIdInputsNot([$firstValue, $secondValue])->get();



namespace App\Models;

use Atldays\HashIds\Concerns\HasHashId;
use Atldays\HashIds\Concerns\HasHashIdRouting;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasHashId;
    use HasHashIdRouting;
}

// GET /users/jR8k2PqL

Route::get('/users/{user}', function (User $user) {
    return $user;
})->name('users.show');

route('users.show', $user);

use App\Models\User;
use Atldays\HashIds\Rules\HashId;
use Atldays\HashIds\Rules\HashIdExists;

$request->validate([
    'user' => ['

$request->validate([
    'users' => [''array', new HashIdExists(User::class)],
]);

// lang/vendor/laravel-hashids/en/validation.php

return [
    'hash_id' => 'The :attribute must be a valid hash ID.',
    'hash_ids' => 'The :attribute must contain only valid hash IDs.',
    'hash_id_exists' => 'The selected :attribute is invalid.',
    'hash_ids_exist' => 'One or more selected :attribute values are invalid.',
];



namespace App\Http\Requests;

use App\Models\Post;
use App\Models\User;
use Atldays\HashIds\Http\Attributes\HashIdField;
use Atldays\HashIds\Http\Concerns\InteractsWithHashIds;
use Atldays\HashIds\Rules\HashId;
use Illuminate\Foundation\Http\FormRequest;

#[HashIdField('posts', Post::class)]
class IndexPostsRequest extends FormRequest
{
    use InteractsWithHashIds;

    protected array $hashIdFields = [
        'author' => User::class,
    ];

    public function rules(): array
    {
        return [
            'author' => ['nullable', new HashId(User::class)],
            'posts' => ['nullable', 'array', new HashId(Post::class)],
        ];
    }
}

$author = $request->hashedModel('author');
$author = $request->hashedModelOrFail('author');
$posts = $request->hashedModels('posts');

protected array $hashIdFields = [
    'filters.author' => User::class,
    'items.*.users' => User::class,
];

$request->hashedModel('filters.author');
$request->hashedModels('items.0.users');



namespace App\Models;

use Atldays\HashIds\Concerns\HasHashId;
use Atldays\HashIds\Concerns\SerializesHashId;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasHashId;
    use SerializesHashId;
}

$user->toArray();

use Atldays\HashIds\Attributes\HashIdColumn;

#[HashIdColumn('public_id')]
class User extends Model
{
    use HasHashId;
}

use Atldays\HashIds\Attributes\HashIdSalt;

#[HashIdSalt('custom-user-salt')]
class User extends Model
{
    use HasHashId;
}

use Atldays\HashIds\Attributes\HashIdSaltFromClass;

#[HashIdSaltFromClass]
class User extends Model
{
    use HasHashId;
}

use Atldays\HashIds\Attributes\HashIdSaltFromTable;

#[HashIdSaltFromTable]
class User extends Model
{
    use HasHashId;
}

use App\Models\User;
use Atldays\HashIds\HashIdRegistry;

HashIdRegistry::make('App\\Old\\Models\\User', User::class);

return [
    'enabled' => (bool) env('HASH_ID_ENABLED', !env('APP_DEBUG')),
    'salt' => env('HASH_ID_SALT', 'secret-salt'),
    'length' => (int) env('HASH_ID_LENGTH', 12),
    'alphabet' => env('HASH_ID_ALPHABET', 'abcdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ234567890'),
];

use Atldays\HashIds\Facades\HashId;

$encoded = HashId::encode(123);
$decoded = HashId::decode($encoded);

use Atldays\HashIds\HashId;

$hashId = HashId::make(
    salt: 'custom-salt',
    length: 16,
    alphabet: 'abcdefghijklmnopqrstuvwxyz1234567890',
);

$hashId = HashId::make(salt: 'custom-salt');
bash
php artisan vendor:publish --provider="Atldays\\HashIds\\HashIdServiceProvider" --tag="laravel-hashids-config"
bash
php artisan vendor:publish --tag=hashids-translations
bash
./bin/docker-php "composer update --prefer-dist --no-interaction"
bash
./bin/docker-php "vendor/bin/pint --test"
./bin/docker-php "composer test"