2011-04-19 28 views
6

我有一個包含數據的數組,它們都有自己的唯一ID。我使用的ORM方法Find(「全部」),將所得陣列看起來有點像這樣:在CakePHP的find('all')方法中用'id'設置索引

Array 
(
    [0] => Array 
     (
      [Wijken] => Array 
       (
        [id] => 1 
        [name] => Naam 
        [lat] => 13.37 
        [lon] => 13.37 
        [zoom] => 14 
       ) 

     ) 

) 

從我的路由我收到一個唯一的ID .. 我想要什麼,是再利用我的數組,並從數據中獲取數據,我們假設ID爲1.

所以我需要的是我的關聯數組(由find('')返回的索引正在使用「Wijken」的id設置) - 對象本身。

我解釋了一切,以防人們有不同的方法。儘管用param ID再次查詢數據庫是不可接受的。

回答

15

嘗試Set::combine

爲了維護查找( '全部')(從icc97評論)結構:

$idsAsIndexes = Set::combine($wijkens, '{n}.Wijken.id', '{n}'); 

另外,您還可以提取單個模型:

$idsAsIndexes = Set::combine($wijkens, '{n}.Wijken.id', '{n}.Wijken'); 

希望的你在找什麼:)

+0

我不知道這個功能。感謝您的通知。 – raultm 2011-04-19 12:01:44

+0

謝謝!但可能,這真的只是一個習慣,對吧? – 2011-04-19 13:27:18

+6

如果你想保持與find('all')相同的數組結構,即包括'Wijken'鍵,你需要'$ wijkensWithIdsAsIndexes = Set :: combine($ wijkens,'{n} .Wijken.id',' {n}');' – icc97 2012-12-17 12:31:19

1

我不知道有什麼辦法讓你的id作爲數組中的關鍵字,甚至不認爲這可能與Cake沒有做一些「有趣」的事情。

但是,如果你做一個發現所有,我必須假設你要處理的數據,並做一些點的循環,此時你可以有這樣的:

foreach ($wijkens as $wijken) { 
    [...]do the general things here[...] 
    if ($wijken['Wijken']['id'] == $url_id) { 
     [...]do the thing you want to specifically do to id = 1 here[...] 
    } 
} 

在另一方面,我知道你不想要任何額外的查詢,儘管它對我來說似乎是一個相對小的交易成本,並且仍然是我所希望的。

+0

是的,這種方法是我的備份。我真的不想做任何有趣的事情。我只是希望CakePHP能有一個解決方案。 – 2011-04-19 09:22:42

相關問題