मैंने SQL UNIONs बनाने के लिए db_query () का उपयोग किया और फिर थीम () फ़ंक्शन का उपयोग करते हुए पेजर सहित तालिका लेआउट में रेंडर किया।
उपयोगकर्ता के लिए यह डिफ़ॉल्ट दृश्य जैसा दिखता है। दूसरा लाभ यह था कि मैं क्वेरी को बहुत अधिक अनुकूलित कर सकता था। मैं "मेरे मित्र की गतिविधियों" को दिखा रहा हूं और यदि आप इसके लिए विचारों का उपयोग करेंगे तो यह आपके दोस्तों की एक सूची बनाएगा और इसे SQL "IN" खंड में उपयोग करेगा जो बहुत ही धीमा है यदि आपके पास 50 या 100 से अधिक रिकॉर्ड हैं।
मैं उन मित्रों की सूची को केवल उन लोगों तक ही सीमित कर सकता हूं जो पिछले x दिनों में साइट में लॉग इन हुए हैं।
यह एक कोड नमूना है:
// Two queries are required (friendships can be represented in 2 ways in the
// same table). No point making two db calls though so a UNION it is.
// Build up the first query.
$query = db_select('flag_friend', 'f')
->condition('f.uid', $account->uid)
->condition('u.login', $timestamp, '>');
$query->addExpression('f.friend_uid', 'uid');
$query->innerJoin('users', 'u', 'u.uid = f.friend_uid');
// Build up the second query.
$query2 = db_select('flag_friend', 'f')
->condition('f.friend_uid', $account->uid)
->condition('u.login', $timestamp, '>');
$query2->addExpression('f.uid', 'uid');
$query2->innerJoin('users', 'u', 'u.uid = f.uid');
// Return the results of the UNIONed queries.
return $query->union($query2)->execute()->fetchCol();