web-dev-qa-db-pt.com

Obter ID do usuário do nome de usuário

Eu sei que posso obter informações do usuário de qualquer usuário com o objeto 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 />';
}

Mas é possível obter o ID de qualquer usuário com base no nome de usuário (ou, melhor ainda, no nome real)? Observe que não estou procurando o usuário conectado atual, mas qualquer usuário.

Dado apenas o nome do usuário, quero ecoar algo como isto:

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

Isso pode ser feito?

5
johanpw

Simples, você pode usar JUserHelper para conseguir isso:

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

echo $userId;

Todo o código acima faz é executar a seguinte consulta ao banco de dados:

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