2010-07-15 50 views
0

輸出數組比方說,我有一個索引行動,我想獲得的項目清單:我如何格式化在CakePHP中

$this->Project->find('all', array('order' => 'Project.modified DESC', 'conditions' => array('Project.user_id' => 1))); 

它運作良好,並返回以下陣列:

Array ([0] => Array ([Project] => Array ([id] => 2 [title] => test project)) [1] => Array ([Project] => Array ([id] => 1 [title] => first project))) 

如何修改查找功能,所以它在以下格式返回數組:

Array ([projects] => Array ([0] => Array ([id] => 2 [title] => test project) [1] => Array ([id] => 1 [title] => first project))) 

謝謝!

+0

什麼項目的問題,而這些項目? – 2010-07-15 19:58:04

回答

0

您可以使用Set::combine()實用程序方法來執行此操作。我已經使用了類似的手段,以便:

public function groupByMenu() { 
    return Set::combine (
    $this->find ( 
     'all', 
     array (
     'conditions' => array ('NavItem.active' => 1), 
     'order'  => 'NavMenuItem.display_order' 
    ) 
    ), 
    '{n}.NavItem.title', 
    '{n}', 
    '{n}.NavMenu.id' 
); 
} 

上面的代碼採用一組導航項和整理他們,使他們由他們中顯示的菜單(或多個)分組。

+0

它適合我。看起來奇怪的是,Cake沒有更簡單的方法來改變輸出數組,比如說,通過設置不同的模型。 謝謝! – 2010-07-16 18:36:47

0

這不是真的清楚,如果這是事實,其結果是在「項目」而不是「項目」,但如果你不喜歡它的下[0]我相信你可以使用PHPs array_shift

$result = $this->Project->find('all', array('order' => 'Project.modified DESC', 'conditions' => array('Project.user_id' => 1))); 
$result = array_shift($result); 

結果將是:

Array ([Project] => Array ([id] => 2 [title] => test project)) [1] => Array ([Project] => Array ([id] => 1 [title] => first project))