Yani, User
modeli ve Item
modeli var. Çoktan çoğa bir ilişki: Bir öğe birçok kullanıcıya ait olabilir ve bir kullanıcı birçok öğeye sahip olabilir. Bu nedenle, UserItemRel
modeli var. En çok tercih edilen ürünler başka bir masadan nasıl edinilir?
item
id
name
date_created
date_updated
user
id
email
password
date_created
date_updated
user_item_rel
user_id
item_id
date_created
Benim sorgu, Yii2 geçiş yapmadan önce, bu oldu: Ben modellerini üretmek için yii2-enhanced-gii uzantısını kullandım
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
.
Son 48 saatte en çok tercih edilen 20 öğeyi sayımlarıyla göstermek istiyorum. Yii1.1'den taşınıyorum ve şu ana kadar oldukça yoldaydım ve bunu anlayamıyorum.
Ben
$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]);
});
}
buldum ama nasıl düzgün kullanmak için?