2013-09-27 75 views
1

我的目標是顯示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。我的問題是如何過濾顯示它的正確Project.id只在我/View/[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
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

你是部分權利,但你沒有使用paginate女巫允許排序表。 – CTSchmidt

+0

你想排序瀏覽頁面嗎?這在這裏沒有任何意義。 –

+0

如果您在此處使用分頁,則無法以您想要的方式獲取數組 –