2014-11-11 8 views
4

안녕하세요 저는 CakePHP 버전 2.5.5를 사용하고 있습니다.CakePHP 순서가 작동하지 않습니다

테이블 이름이 chat_ategory_mages입니다. 평균 주파수 수를 내림차순으로 가져오고 싶습니다. 확인하시기 바랍니다 주파수에 대해 알아야 - How to get Average hits between current date to posted date in MySQL?

chat_ategory_mages

id  chat_category_id hits  created 
------------------------------------------------ 
1   5     10  2014-11-07 11:07:57 
2   5     8  2014-11-10 05:10:20 
3   5     70  2014-10-04 08:04:22 

코드

$order=array('Frequency' => 'DESC'); 
$fields=array(
    'ChatCategoryImage.id', 
    'ChatCategoryImage.chat_category_id', 
    'ChatCategoryImage.created', 
    'ChatCategoryImage.hits', 
    'hits/(DATEDIFF(NOW(),created)) AS Frequency', 
); 

QUERY-1

$rndQry=$this->ChatCategoryImage->find('all',array('conditions'=>array('ChatCategoryImage.chat_category_id'=>$cetegory_id), 'fields'=>$fields, 'order'=>$order, 'limit'=>10)); 
pr($rndQry); //WORKING FINE 

QUERY-2 테이블 위

//THIS IS NOT WORKING 
$this->Paginator->settings = array(
     'conditions'=>array('ChatCategoryImage.chat_category_id'=>$cetegory_id), 
     'fields'=>$fields, 
     'limit' => 10, 
     'order' => $order, 
); 
$getCategoryImages = $this->Paginator->paginate('ChatCategoryImage'); 
pr($getCategoryImages); //NOT WORKING 

내가 order이 제대로 작동 간단한 CakePHP의 쿼리를 작성하지만, 내가 사용하는 경우 CakePHP의 그것이 작동하지 않는 페이지 매김합니다. 만약 내가 $order=array('hits' => 'DESC'); 이것을 사용하고있어 완벽한 woring. 결과를 70,10,8로 일관되게 보여 주지만, Frequency을 추가 할 때 결과는 내림차순이 아닙니다.

MySQL의 쿼리

QUERY-1 :

ChatCategoryImage을 선택합니다. id, ChatCategoryImage. chat_category_id, ChatCategoryImage. hits, ChatCategoryImage. created, 조회수/(DATEDIFF (NOW(), 생성 됨)) AS 주파수, myshowcam. chat_category_images AS ChatCategoryImage WHERE ChatCategoryImage. DESC Frequency의 LIMIT BY chat_category_id는 5 ORDER = 10

QUERY-2 :

ChatCategoryImage을 선택한다. id, ChatCategoryImage. chat_category_id, ChatCategoryImage. hits, ChatCategoryImage. created, 조회수/(DATEDIFF (NOW(), 생성 됨)) AS 주파수, myshowcam. chat_category_images AS ChatCategoryImage WHERE ChatCategoryImage. chat_category_id = 5 LIMIT 10

문제점과 그 두 번째 쿼리에 ORDER BY Frequency이 나오지 않는 이유는 무엇입니까?

감사 치누

답변

1

당신은이 아니었다`$ this-> Paginator-> settings` NOT`$ getAllCourses = $ this-> 페이지를 매기 (

$order = array('Frequency' => 'desc'); 
+0

Abhisek에서도 코드가 작동하지 않습니다. 같은 결과가 나타납니다. SELECT'ChatCategoryImage '.'id','ChatCategoryImage'.chat_category_id','ChatCategoryImage'.'hits','C CHAT_CategoryImage'.ChatCategoryImage' = 13 LIMIT 10 – Developer

+0

나를 보여줄 수있는 곳은? 'ChatCategoryImage'는'ChatCategoryImage'입니다. 이전에 시도한 QUERY-2와 같은 코드입니다. 나는 실제로 너와 똑같은 사건을 시도했는데 내가 게시 한 내용은 – Abhishek

+0

예. 기다려라. – Developer

0

코드는 릴 잘못

$this->paginate = array(
        'conditions' => array('ChatCategoryImage.chat_category_id'=>$cetegory_id), 
        'limit' => 10, 'order' => 'Frequency' => 'DESC'); 
    $getAllCourses = $this->paginate('ChatCategoryImage'); 
+0

순서의 방식을 변화 virtualFields

$this->ChatCategoryImage->virtualFields = array('Frequency' => 'hits/(DATEDIFF(NOW(),created))'); 

을 사용할 수 있습니다 'ChatCategoryImage'); ' –

0

이가 나에게 무슨 일이 있었이었다. 페이지 매기기 함수에 세 번째 매개 변수 인 $ whitelist를 추가해야합니다. 예를 들어.

$this->Paginator->settings = array(
     'conditions'=>array('ChatCategoryImage.chat_category_id'=>$cetegory_id), 
     'fields'=>$fields, 
     'limit' => 10, 
     'order' => $order, 
); 
$scope = array(); 
$whitelist = array('ChatCategoryImage.id', ...); //The fields you want to allow ordering. 

$getCategoryImages = $this->Paginator->paginate('ChatCategoryImage', $scope, $whitelist); 
pr($getCategoryImages); 

왜 이런 일이 발생하는지 알 수 없습니다. 나는 paginate 함수 안에 코드를 보려고했지만 그것을 알아낼 수가 없었다.

+0

Nope :(작동하지 않습니다. 그런데'Frequency '가 별칭 필드 이름입니다. 따라서 순서대로 표시되지 않습니다. – Developer

관련 문제