तो, User
मॉडल है, और Item
मॉडल है। यह कई से अधिक संबंध है: एक आइटम कई उपयोगकर्ताओं से संबंधित हो सकता है, और उपयोगकर्ता के पास कई आइटम हो सकते हैं। इसलिए, UserItemRel
मॉडल है।किसी अन्य तालिका से, सबसे पसंदीदा आइटम कैसे प्राप्त करें?
संक्षेप में:
item
id
name
date_created
date_updated
user
id
email
password
date_created
date_updated
user_item_rel
user_id
item_id
date_created
मेरे क्वेरी, Yii2 करने के लिए स्विच करने से पहले, यह था:
SELECT COUNT(UIR.`user_id`) as `favourited`, IT.`id`, IT.`name`, CA.`name` as `category`
FROM `user_item_rel` UIR
LEFT JOIN `item` IT ON UIR.`item_id` = IT.`id`
LEFT JOIN `category_item` CI ON UIR.`item_id` = CI.`item_id`
LEFT JOIN `category` CA ON CI.`category_id` = CA.`id`
WHERE UIR.`date_created` >= (SYSDATE() - INTERVAL 3 YEAR)
GROUP BY UIR.`item_id`
ORDER BY
`favourited` DESC
LIMIT 20
मैं yii2-enhanced-gii विस्तार का उपयोग किया है मॉडल उत्पन्न करने के लिए।
मैं पिछले 48 घंटों में 20 की सबसे पसंदीदा वस्तुओं को उनकी गणना के साथ दिखाना चाहता हूं। मैं Yii1.1 से माइग्रेट कर रहा हूं, और यह अब तक काफी सवारी कर रहा है, और मैं इसे समझ नहीं सकता।
मैं
$this->hasMany(UserItemRel::className(), ['id' => 'user_id'])
->viaTable('user_item_rel', ['id' => 'item_id'], function ($query) {
$query->andWhere(['date_created < INTERVAL 2 DAY'])
->orderBy(['COUNT(*)' => SORT_DESC]);
});
}
पाया है लेकिन कैसे ठीक से इस उपयोग कैसे करें?