web-dev-qa-db-fra.com

Obtenir l'ID utilisateur à partir du nom d'utilisateur

Je sais que je peux obtenir informations sur l'utilisateur de tout utilisateur possédant l'objet getUser( $id ):

$user = JFactory::getUser();

if (!$user->guest) {
  echo 'You are logged in as:<br />';
  echo 'User name: ' . $user->username . '<br />';
  echo 'Real name: ' . $user->name . '<br />';
  echo 'User ID  : ' . $user->id . '<br />';
}

Mais est-il possible d'obtenir l'identifiant de n'importe quel utilisateur en fonction de son nom d'utilisateur (ou mieux, du vrai nom)? Notez que je ne cherche pas l'utilisateur actuellement connecté, mais un utilisateur donné.

Étant donné que seul le nom des utilisateurs, je veux faire écho à quelque chose comme ça:

Jon Doe has user ID: 43
Jane Doe has user ID: 82

Cela peut-il être fait?

5
johanpw

Simple, vous pouvez utiliser JUserHelper pour y parvenir:

$username = 'jophanpw';
$userId    = JUserHelper::getUserId($username);

echo $userId;

Tout le code ci-dessus ne fait exécuter la requête de base de données suivante:

public static function getUserId($username)
{
    $db = JFactory::getDbo();
    $query = $db->getQuery(true)
        ->select($db->quoteName('id'))
        ->from($db->quoteName('#__users'))
        ->where($db->quoteName('username') . ' = ' . $db->quote($username));
    $db->setQuery($query, 0, 1);

    return $db->loadResult();
}
10
Lodder