2013-09-27 2 views
1

내 목표는 하나의 프로젝트와 여러 키워드를 표시하는 것입니다. 내 DB는 간단하다 : 많은 키워드를
키워드있다
cakephp 배열 서식 지정

프로젝트 프로젝트 지금까지

너무 좋아에 속한다. 지금은 내 ProjectsController에서 정보를 얻으려고 :

public function view($id = null) 
{ 
    $this->Project->bindModel(array('hasMany' => array('Keyword' => array('className' => 'Keyword', 
                'foreignKey' => 'project_id') 
           )), false); 
    $this->paginate['Project']['conditions'] = array('Project.id' => $id); 
    $this->paginate['recursive'] = '2'; 
    $this->set('projects', $this->paginate('Project')); 
    $Projects = $this->paginate('Project'); 
    $this->set('projects', $this->paginate()); 
} 

예기치 않은 조금 보이는 배열 밖으로 인쇄하여 :

Array 
(
    [0] => Array 
    (
     [Project] => Array 
     (
      [id] => 3 
      [title] => Foo 
      [created] => 2013-08-05 17:39:07 
      [modified] => 2013-08-05 17:39:07 
     ) 
     [Keyword] => Array 
     (
      [0] => Array 
      (
       [id] => 1 
       [project_id] => 3 
       [title] => Num1 
       [demand] => 50000000000 
       [competition] => 37889.56700 
       [cpc] => 676.50 
       [created] => 2013-06-26 17:54:48 
       [modified] => 2013-09-19 13:37:25 
        ) 
     ) 
    ) 
    [1] => Array 
    (
     [Project] => Array 
     (
      [id] => 4 
      [title] => Bar 
      [created] => 2013-08-05 17:39:07 
      [modified] => 2013-08-05 17:39:07 
      ) 
     [Keyword] => Array 
     (
      [0] => Array 
      (
       [id] => 3 
       [project_id] => 4 
       [title] => Num1 
       [demand] => 76534000000 
       [competition] => 5555.55560 
       [cpc] => 99.34 
       [created] => 2013-06-26 17:54:48 
       [modified] => 2013-09-19 13:37:36 
      ) 
     ) 
    ) 
) 

가 지금은 문제가을, 어떻게 그것을 표시 할 오른쪽 Project.id? 새로 만든 배열에 Project.id이 아닌 다른 ID가 포함되어 있기 때문입니다.

Array 
(
    [Project] => Array 
    (
     [id] => 3 
     [title] => Lerncoachies 
     [created] => 0000-00-00 00:00:00 
     [modified] => 2013-08-05 17:39:07 
    ) 
     [Keyword] => Array 
     (
      [0] => Array 
      (
       [id] => 1 
       [project_id] => 3 
       [title] => Num1 
       [demand] => 50000000000 
       [competition] => 37889.56700 
       [cpc] => 676.50 
       [created] => 2013-06-26 17:54:48 
       [modified] => 2013-09-19 13:37:25 
      ) 
     ) 
    ) 
) 
+0

"조금 이상하다"와 같은 용어를 사용하지 말고 대신 (정확히 말하면) 정확히 무엇을 기대했는지 분명히 밝히는 것이 좋습니다. 누군가가 케이크 PHP를 안다면 그녀는 자신이 필요로하는 예제로 어떻게 이루어 졌는지를 말할 수 있을지 모르지만 그렇게하는 것만 큼 (당신의 "조금 이상한"방식) 할 수는 없습니다. – hakre

+0

괜찮은 인수입니다. 내 질문을 업데이트했습니다 – CTSchmidt

+0

레코드를 페이지 매기기를 원하십니까? –

답변

1

설명에서 당신은 키워드 프로젝트가 아닌 페이지 매김을하고 싶은 것처럼 보입니다. 따라서 '예상치 못한 결과'가 있습니다.

프로젝트의 페이지 매김에 대한 예상되는 결과입니다.

당신이 다음 키워드 페이지를 매기하려는 경우 :

$this->Project->recursive = 1; 
$project = $this->Project->findById($id); 
$this->loadModel('Keywords'); // I don't remember if this is needed 
$this->paginate['Keywords'] = array(
    'project_id' => $project['Project']['id'] 
); 
$this->set('keywords', $this->paginate('Keyword')); 
$this->set('project', $project); 

당신은 1 개 프로젝트와보기를해야합니다 그리고 당신은 정렬과 주어진 프로젝트와 관련된 키워드 페이지를 매기는 할 수 있습니다.

1
: 제 질문은 내가

내가 작업하는 가장 좋은 방법을 생각 만 내 /View/[id]

편집에 표시 그것에 대한 권리 Project.id를 필터링 할 방법이다,이 같은 배열 구조는

public function view($id = null) { $this->Project->bindModel(array( 'hasMany' => array('Keyword' => array( 'className' => 'Keyword', 'foreignKey' => 'project_id') )), false ); $this->Project->recursive = 2; $project = $this->Project->findById($id); } 

이제 프로젝트 배열이 사용자의 요구 사항을 충족시켜야합니다.

+0

당신은 부분적이지만 테이블을 정렬 할 수있는 페이지 매제 마녀를 사용하지 않았습니다. – CTSchmidt

+0

보기 페이지를 정렬 하시겠습니까? 여기 아무 것도 의미하지 않습니다. –

+0

여기서 페이지 매기기를 사용하는 경우 원하는 방식으로 배열을 가져올 수 없습니다. –