2011-11-16 4 views
0

저는 코딩 경험이별로없는 cakephp 초보자입니다. 조건부로 $ this-> paginate() 함수에 빈 배열을 할당하려고하는데 작동하지 않습니다. 다음은 LogsController 내 일부 코드 :

if ($privacyVisible['Title']['privacy'] == 1) { 
      $this->Log->recursive = 0; 
      $this->paginate = array(
       'limit' => 10, 
       'order' => array(
       'Log.id' => 'desc' 
       ), 'conditions' => array('Title.slug' => $id)); 

       $this->set('logs',$this->paginate()); 
     } else { 
      $this->Log->recursive = 0; 
      $this->paginate = array(
       'limit' => 10, 
       'order' => array(
       'Log.id' => 'desc' 
       ), 'conditions' => array('1' => '2')); 

       $this->set('logs',$this->paginate()); //here it should be empty 
     } 

는 그러나 디버그 ($ 로그)를 수행 한 후 내보기에, 그것은 하늘의 배열 인 경우

응용 프로그램 \보기 \ 로그 \의 index.ctp (라인 10)

Array 
(
[0] => Array 
    (
     [Log] => Array 
      (
       [id] => 114 
       [title_id] => 16 
       [body] => hi! 
       [time] => 2011-11-15 21:19:10 
      ) 

     [Title] => Array 
      (
       [id] => 
       [user_id] => 
       [logname] => 
       [slug] => 
       [privacy] => 
      ) 

    ) 

[1] => Array 
    (
     [Log] => Array 
      (
       [id] => 113 
       [title_id] => 14 
       [body] => hey! 
       [time] => 2011-11-15 20:52:52 
      ) 

     [Title] => Array 
      (
       [id] => 14 
       [user_id] => 7 
       [logname] => college 
       [slug] => college 
       [privacy] => 1 
      ) 

    ) 

[2] => Array 
    (
     [Log] => Array 
      (
       [id] => 112 
       [title_id] => 12 
       [body] => hey hi. 
       [time] => 2011-11-15 20:51:19 
      ) 

     [Title] => Array 
      (
       [id] => 
       [user_id] => 
       [logname] => 
       [slug] => 
       [privacy] => 
      ) 

    ) 

[3] => Array 
    (
     [Log] => Array 
      (
       [id] => 111 
       [title_id] => 12 
       [body] => that will be great. 
       [time] => 2011-11-15 20:51:13 
      ) 

     [Title] => Array 
      (
       [id] => 
       [user_id] => 
       [logname] => 
       [slug] => 
       [privacy] => 
      ) 

    ) 

) 

다음 다른 조건, 즉 개인 정보 보호 = 영을 적용, 나는 모든 값이 아래와 같이 반환 무엇입니까 , 나는 그것을 (빈 ($ 로그)) 테스트하고 기꺼이 "당신은 허용되지 않습니다." 그러나 지금은 어려워 보입니다. 어떤 추측이라도, 여기에서 무엇이 잘못 되었습니까?

+0

귀하의 협회가 어떻게 구성되어 있는지 알려주십시오. 제목과 로그 (hasOne, hasMany 등)의 관계는 무엇입니까? – mensch

+0

사용자 hasMany 제목. 제목 hasMany Logs ..이게 당신이 요구 한 것을 분명하게 해줍니까? – Sushil

+0

이것이 'conditions'=> array ('1'=> '2') 올바른지 의심 스럽습니까? – burzum

답변

1

나는 당신이 여기에서 성취하려고하는 것을 완전히 이해하지 못하고 있으며, 나는 이것이 더 우아하고 또 다른 방법으로 행해질 수 있다고 느낀다. Containable 동작을 사용 해본 적이 있습니까? Containable은 종종 관련 콘텐츠를 포함하여 원치 않는 결과를 필터링하는 데 사용됩니다.

질문에 대한 답변을 찾으려면 $this->set();을 사용할 때 빈 배열을 전달하지 않으시겠습니까?

호출 $this->paginate()은 데이터를 표시하는 데 필요한 찾기 작업을 실행합니다. 당신과 같이, 당신의 경우/else 문의 두 번째 부분에 로그 변수로 빈 배열을 전달할 수 :

$this->set('logs',array()); 

PaginationHelper는 빈 배열에 휴식 수도 있지만, 나는 그것의 확실하지 않다, 그래서 당신 관련 뷰에서 빈 값을 확인하려고 할 수 있습니다.

1

$ this-> ('로그', $ this-> PAGINATE())

될해야 설정 :

$ this-> 설정 ('로그', $ this-> PAGINATE (' 로그')); 당신이 정말로 당신의 데이터를 다시 가져 오기 할 때

$logs = array(); 

if ($privacyVisible['Title']['privacy'] == 1) { 

    $this->paginate = array(...); 
    $logs = $this->paginate('Log'); 

} 

$this->set(compact('logs')); 

이 방법, 당신은 데이터베이스 쿼리를 수행 :로

또는, 당신은 그것을 다시 작성할 수 있습니다.