Generate unique username in Laravel

Updated 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