it-swarm.com.de

JDatabaseQuery zitiert die Elemente korrekt in select

Ich habe eine Datenbankabfrage wie folgt geschrieben:

$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");

Wie kann ich Elemente in der select -Klausel zitieren, insbesondere wenn ein Alias ​​vorhanden ist?

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

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

Mit der quoteName-Funktion können Sie Spaltennamen in Anführungszeichen setzen. Es akzeptiert Strings und Arrays. Ein einfaches Zitat mit Alias ​​(der AS) würde so aussehen:

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

$ as (der zweite Parameter) ist immer optional. Wenn Sie Ihrer Spalte also keinen Alias ​​geben möchten, schreiben Sie einfach

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

Mit einem Array würde es so aussehen:

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

Notieren Sie den Nullwert im zweiten Array, wenn Sie einer Spalte keinen Alias ​​zuweisen möchten.

Solange Sie keine reservierten Schlüsselwörter oder Variablen (z. B. vom Benutzer übermittelt) als Spaltennamen verwenden, würde ich sie nicht umgehen. Siehe auch: https://docs.joomla.org/Secure_coding_guidelines#Secure_field_names

3
fruppel