2011-03-01 2 views
1

나는 지난 이틀 동안이 문제에 대한 해결책을 찾으려고 노력했기 때문에 해결책이나 어딘가에 대한 링크를 제공 할 수있는 사람은 내가 알아야 할 것을 찾아 낼 수있어서 큰 도움이 될 것입니다.조건이있는 연관된 모델 필드를 사용하여 쿼리 결과를 정렬하려면 어떻게합니까?

나는 (중 $ this-> 키워드 방식>을 통해 찾거나 사용자 지정 쿼리를 사용하여) 목록을 반환하는 쿼리를 생성 할

Keyword hasMany Click 

CakePHP의

에서 다음 모델 관계를 가지고 지난 주에받은 클릭 수로 정렬 된 유사 키워드 불행히도 저는 지난 주에 발생한 클릭 수를 계산할 필요가 있기 때문에 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.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' 
    ); 

이 비트가 어디로 가야할지 모르겠습니다.

누군가 나를 비참하게 만들 수 있습니까? 감사합니다 :) 잘

답변

1

, 나는이 페이지에서 필요한 것을 수행 SQL 쿼리 blag 관리 :

SELECT * 
     FROM keywords 
     AS Keyword 
     LEFT JOIN (SELECT keyword_id,count(*) AS click_count FROM clicks GROUP BY keyword_id) 
     AS Click 
     ON Keyword.id = Click.keyword_id 
     WHERE Keyword.word_count > ".$keyword['Keyword']['word_count']." 
     AND UPPER(Keyword.keyword) LIKE '%".strtoupper($keyword['Keyword']['keyword'])."%' 
     ORDER BY Click.click_count DESC 

바라건대 다른 사람이 발견 할 것이다 : 여기 http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/ASP/Q_20646898.html

을가 모습입니다 유능한.

관련 문제