web-dev-qa-db-fra.com

JDatabaseQuery cite correctement les éléments dans select

J'ai écrit une requête de base de données, comme suit:

$query = $db->getQuery(true)
    ->select("u.*,ju.username,ju.email,ju.lastvisitDate as last_login")
    ->from("#__component_users AS u")
    ->leftJoin("#__users AS ju ON ju.id = u.uid");

Comment puis-je citer des éléments dans la clause select, en particulier lorsqu'il existe un alias?

2
user3533235
$db->quoteName(mixed $name, mixed $as = null)

https://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_quoteName

Avec la fonction quoteName, vous pouvez citer des noms de colonnes. Il accepte les chaînes et les tableaux. Une citation simple avec alias (AS) ressemblerait à ceci:

$db->quoteName('ju.lastvisitDate', 'last_login')

$ as (le second paramètre) est toujours optionnel. Donc, si vous ne voulez pas donner à votre colonne un alias, écrivez simplement

$db->quoteName('ju.lastvisitDate')

Avec un tableau cela voudrait ceci:

$db->quoteName(array('ju.email', 'ju.lastvisitDate'), array(null, 'last_login'))

Notez la valeur null dans le second tableau si vous ne voulez pas donner un alias à une colonne.

Tant que vous n'utilisez pas de mot clé ou de variable réservé (par exemple, soumis par l'utilisateur) comme nom de colonne, je ne les échapperai pas. Voir aussi ceci: https://docs.joomla.org/Secure_coding_guidelines#Secure_field_names

3
fruppel