テーブル内のカテゴリIDの数をカウントする簡単なSQLステートメントを記述しました。問題は、それがNULL
を返すことです。
_$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('category_id','COUNT(*)')));
$query->from($db->quoteName('#__eb_event_categories'))
->group($db->quoteName('category_id'));
$db->setQuery($query);
$results = $db->loadObjectList();
var_dump($results);
_
COUNT(*)
を削除すると、selectステートメントは正常に動作します。何を間違って書いたのですか?
quoteName
をselect
句から削除する必要があるため、次のようになります。
_$query->select(array('category_id','COUNT(*)'));
_
配列で$db->quoteName()
を使用すると、クエリがレンダリングされるときにすべての配列値がバックティックでラップされます。
_category_id
_は列名であるため、$db->quoteName()
を介してバックティックでラップしても問題ありません。
COUNT(*)
はMySQL関数です。バッククォートに包まれると意味を失います。
元のクエリはCOUNT(*)
という列を探していましたが、もちろんこれは正しくありません(または使用できません)。