Generate unique username in Laravel

Created at 08-Mar-2022 , By samar

Generate unique username in Laravel

In this session, we are going to try to solve the "Generate unique username in Laravel" puzzle by using the computer language.

You can generate the unique username in Laravel from user's name. Here we will create the username and will also take care of that the record with same username is not already exists in users table.
  • Generate unique username from user's name while creating user in Laravel

    //routes\web.php
    Auth::routes();
    
    //app\Models\User.php
    use Illuminate\Support\Str;
    
    protected $fillable = [
        'name',
        'email',
        'password',
        'username'
    ];
    
    public function generateUserName($name){
        $username = Str::lower(Str::slug($name));
        if(User::where('username', '=', $username)->exists()){
            $uniqueUserName = $username.'-'.Str::lower(Str::random(4));
            $username = $this->generateUserName($uniqueUserName);
        }
        return $username;
    }
    
    //app\Http\Controllers\Auth\RegisterController.php
    protected function create(array $data)
    {
    
        $userObject = New User;
        $userName = $userObject->generateUserName($data['name']);
    
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
            'username'=>$userName,
        ]);
    }
    
    //Create a username column in the users table.
    ALTER TABLE `users`  ADD `username` VARCHAR(200) NOT NULL  AFTER `remember_token`;
    

Back to code snippet queries related laravel

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Buy Me A Coffee

Don't forget to share this article! Help us spread the word by clicking the share button below.

We appreciate your support and are committed to providing you valuable and informative content.

We are thankful for your never ending support.