CakePHPのfind(‘all’)の多次元配列を検索する方法


はじめまして！

itemsテーブルにfavoritesテーブルが関連付けられた状況(Item hasMany Favorite)の以下の配列において、  
Favoriteのuser_idを検索してuser_idに10があるか確認したいのですが、どうすればよいのかわかりません。

このような場合、どのようなコードを記述すればよいでしょうか?  
何かご存知の方は是非ともご教授のほどよろしくお願いします。

[code]

    <?php echo $item['Favorite'][0]['user_id']; ?>
    
[/code]

で12が表示されます。

[code]

    $dataForView = array(
        'items' => array(
            (int) 0 => array(
                'Item' => array(
                    [maximum depth reached]
                ),
                'Purchase' => array(
                    [maximum depth reached]
                ),
                'Favorite' => array( 
                   user_id => 12
                )                                       
            ),
            (int) 1 => array(
                'Item' => array(
                    [maximum depth reached]
                ),
                'Purchase' => array(
                    [maximum depth reached]
                ),
                'Favorite' => array(
                    user_id => 23
                )
            ),
               //(int)2~続く
    
[/code]




Cake2以降なら[Hash](http://book.cakephp.org/2.0/ja/core-utility-
libraries/hash.html)ユーティリティクラスを使用するのが便利です。

[code]

    $found = Hash::extract($dataForView, 'items.{n}.Favorite[user_id=10]');
    
[/code]

これで`user_id`が10にマッチするFavoriteが **すべて** 抽出されます。  
見つからない場合は空の配列が帰りますので、それで判定可能です。

