2014-11-03 3 views
0

현재 'Users'라는 테이블이 있습니다. 그 하나 하나의 모든 사용자를 표시 곳두 개 이상의 주문 조건을 가진 Cakephp 페이지 매김

Id, name, image, is_active, etc, etc, created, modified 

같은 열이 나는 모든 사용자가 이미지를하지 않습니다 여기 (보기에) 다음 버튼을 클릭에,

을 페이지 매김을 설정하고와. 따라서 페이지 매김 순서는 다음과 같습니다. 먼저 이미지가있는 사용자를 표시합니다. 이미지가없는 사용자가 뒤를 잇습니다.

지금까지 내가 가진이

$this->paginate = array(
     'limit' => 1, 
     'conditions' => array(
     'User.is_active' => 0 
     ), 
     'order' => array(
     'User.image' => 'DESC' 
     ), 
     'group' => array(
     'User.id' 
     )  
    ); 

나는 페이지가 새로 고쳐 OR의 첫 번째로드에 이미지, 모든 시간이 FIRST 표시하려면 임의 사용자에게보기, 지금 원하는 것은 페이지. 이미지가있는 다른 사용자와 그 다음에 이미지가없는 사용자가 계속됩니다.

이 쿼리는 phpmyadmin sql 패널에서 올바르게 작동합니다. 하지만 나는 그것이

select * User order by image<>' ' desc,rand() 

당신은 내가 더 이상 데이터를 잃었 생각한다면, 문의하시기 바랍니다에 대한의 CakePHP PAGINATE의 쿼리를 작성 어떻게 확실하지 않다. 내가 코멘트에 쓸 게.

답변

0

모델에서 사용자가 설정할 수 있습니다. 저는 이것이 페이지 매김 순서에서도 효과가 있다고 생각합니다.

public $order = array(
     'ISNULL(Users.image) ASC', 
     'RAND() * User.id' 
    ); 

하지만 모든 사용자가 무작위로 지정됩니다. 주문 필드에 임의의 사용자를 첫 번째 레코드에만 표시하는 방법을 모르겠습니다. 임의의 행을 선택하여 배열의 맨 위에 놓을 수있는 사용자 지정 함수를 사용하는 것이 좋습니다.

관련 문제