WordPress $ WPDB-> Usermeta Sort by Meta_value
سؤال
أحاول عرض جميع المستخدمين بناءً على meta_key يسمى "نقاط" مثل هذا:
$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 إلى ∞. لذا ، كيف يمكنني تشغيله؟ شكرًا.
ملاحظة: هذا هو الإخراج:
Array ( [0] => 1 [1] => 2 [2] => 4 )
لذلك أعتقد أنه أمر بالمعرف.
المحلول
SELECT user_id, meta_value FROM $wpdb->usermeta WHERE meta_key = 'points' ORDER BY CAST(meta_value AS SIGNED) DESC LIMIT
يلقي (meta_value كما وقع) سوف يسفي من longtext إلى int. انه يعمل الان.
نصائح أخرى
إذا لم أكن مخطئًا تمامًا في MySQL ، فيجب عليك إضافة ملف meta_key = 'النقاط' إلى جملة أين. أعد كتابة الاستعلام إلى:
حدد user_id ، meta_value
من $ wpdb-> usermeta
حيث meta_key = 'النقاط'
طلب بواسطة meta_value desc
إزاحة الحد الأقصى $ {$ paginate-> Offset ()}
لا تنتمي إلى StackOverflow