Как проверить занят ли ник?

Суть проблемы такова, есть исходник регистрации пользователя (исходник не мой) Не могу реализовать функцию.. проверить есть такой username в базе или нет. Если есть - продолжать регистрацию, нет - ошибка что пользователь существует. При этом в исходнике есть функция find где проверяется email(она работает), пытался с ней поиграться, но нечего не выходит.

public static function find($email, $return_assoc = false){
    $con = DB::getConnection();
    $email = (String) Filter::String( $email );
    // Make sure the user does not exist. 
$findUser = $con->prepare("SELECT user_id,password FROM users WHERE email = LOWER(:email) LIMIT 1");
$findUser->bindParam(':email', $email, PDO::PARAM_STR);
    $findUser->execute();

    if ($return_assoc) {
        return $findUser->fetch(PDO::FETCH_ASSOC);
        # code...
    }
    $userFound = (boolean) $findUser->rowCount;
     return $userFound;
}

Обработчик:

if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Always return JSON format
// header('Content-Type: application/json');

$return = [];

$username =  Filter::String( $_POST['username'] );

$email = Filter::String( $_POST['email'] );

$userFound = User::find($email, true);

if($userFound) {
  // User exists 
  // We can also check to see if they are able to log in. 
  
  
  $return['error'] = "You already have an account";
  $return['is_logged_in'] = false;
} else {
  // User does not exist, add them now. 
  
  $password = password_hash($_POST['password'], PASSWORD_DEFAULT);
  
  
  $addUser = $con->prepare("INSERT INTO users(username, email, password) VALUES(LOWER(:username), :email, :password)");
  $addUser->bindParam(':username', $username, PDO::PARAM_STR);
  $addUser->bindParam(':email', $email, PDO::PARAM_STR);
  $addUser->bindParam(':password', $password, PDO::PARAM_STR);
  $addUser->execute();

  $user_id = $con->lastInsertId();

  $_SESSION['user_id'] = (int) $user_id;

  $return['redirect'] = '../index.php';
  $return['is_logged_in'] = true;
}

Ответы (1 шт):

Автор решения: Алексей Шиманский
  1. убрать из метода find строки

    $userFound = (boolean) $findUser->rowCount;
    return $userFound;
    

    метод должен возвращать юзера...на что он и нацелен

    а также в выборку добавить username помимо user_id,password

  2. вместо строки $userFound = User::find($email, true); пишется что-то типа

    $user = User::find($email, true);
    
    if($user) {
        if ($user['username'] === $username) {
            $return['error'] = "Такое имя уже есть";
            $return['is_logged_in'] = false;  
        }
    }
    
→ Ссылка