web-dev-qa-db-ja.com

JDatabaseQueryが項目を正しく引用して選択します

私は次のようにデータベースクエリを書きました:

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

特にエイリアスがある場合、select句でアイテムを引用するにはどうすればよいですか?

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

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

QuoteName関数を使用すると、列名を引用できます。文字列と配列を受け入れます。エイリアス(AS)を含む単純な引用は次のようになります。

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

$ as(2番目のパラメーター)は常にオプションです。したがって、列にエイリアスを付けたくない場合は、

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

配列では次のようになります。

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

列にエイリアスを付けたくない場合は、2番目の配列のnull値に注意してください。

予約済みのキーワードや変数(ユーザーが送信したものなど)を列名として使用しない限り、エスケープしません。こちらもご覧ください: https://docs.joomla.org/Secure_coding_guidelines#Secure_field_names

3
fruppel