Wordpress $ wpdb-> usermeta сортировать по meta_value - PullRequest
3 голосов
/ 23 ноября 2010

Я пытаюсь отобразить всех пользователей на основе мета-ключа, называемого «точками», например:

$wpdb->get_col($wpdb->prepare("
SELECT user_id, meta_key = 'points', meta_value 
FROM $wpdb->usermeta 
ORDER BY meta_value DESC 
LIMIT $limit OFFSET {$paginate->offset()}"));

Пользователи отображаются правильно, но порядок не работает, значение meta_value равно числу изОт 1 до ∞.Итак, как мне заставить его работать?Спасибо.

PS: Это вывод:

Array ( [0] => 1 [1] => 2 [2] => 4 ) 

Так что я считаю, что заказано по ID.

Ответы [ 2 ]

6 голосов
/ 23 ноября 2010
SELECT user_id, meta_value FROM $wpdb->usermeta WHERE meta_key = 'points' ORDER BY CAST(meta_value AS SIGNED) DESC LIMIT

CAST (meta_value AS SIGNED) преобразуется из LONGTEXT в INT. Это работает сейчас.

1 голос
/ 23 ноября 2010

Если я не совсем ошибаюсь в вопросе mysql, вы должны добавить meta_key = 'points' к предложению where.Перепишите запрос на:

SELECT user_id, meta_value
FROM $ wpdb-> usermeta
WHERE meta_key = 'points'
ORDER BY meta_value DESC
LIMIT $ limit OFFSET{$ paginate-> offset ()}

...