Я провел последние два дня, пытаясь найти решение этой проблемы, чтобы любой, кто может предоставить решение или ссылку на другое место, где я мог бы найти то, что мне нужно знать, оказал бы мне огромную услугу.
У меня есть следующие модельные отношения в CakePHP
Keyword hasMany Click
Я хочу создать запрос (либо через $ this-> Keyword-> find, либо с помощью пользовательского запроса), который будет возвращать список похожих ключевых слов, упорядоченных по количеству кликов, которые они получили за последнюю неделю. К сожалению, я не могу просто использовать поле counterCache 'click_count' для этого, потому что мне нужно только считать клики, которые произошли за последнюю неделю. Чтобы еще больше усложнить ситуацию, я должен добавить условие LIKE () и в поле ключевого слова.
Вот что у меня есть:
$result = $this->Keyword->find('all',array(
'conditions' => array(
'word_count >' => $keyword['Keyword']['word_count'],
'UPPER(keyword) LIKE' => "%".strtoupper($keyword['Keyword']['keyword'])."%"
),
'recursive' => 0,
'limit' => 10
));
Мне просто нужно добавить бит, который сортирует эти результаты, по количеству связанных записей Click, где Click.created находится в течение последней недели. Я понял, что эта часть должна выглядеть примерно так:
array(
'conditions' => array(
'Click.created >' => date("Y-m-d",strtotime("1 week ago"))
),
'fields' => array(
'COUNT(Click.keyword_id) as count'
),
'group' => 'Click.keyword_id',
'order' => 'count DESC'
);
Я просто не уверен, куда этот бит должен идти.
Пожалуйста, кто-нибудь может избавить меня от моих страданий? Спасибо:)