0

foreach ループを実行しないと、クエリ結果から必要な結果を抽出できないため、助けが必要です。

私のクエリは次のような配列を返します:

array(
(int) 0 => array(
    'Event' => array(
        'id' => '1',
        'title' => 'Event title',
    ),
    'ShopstaffR' => array(
        (int) 0 => array(
            'id' => '1',
            'event_id' => '1',
            'shopstaff_id' => '1'
        ),
        (int) 1 => array(
            'id' => '2',
            'event_id' => '1',
            'shopstaff_id' => '2'
        )
    ),
    'Shopstaff' => array(
        (int) 0 => array(
            'id' => '1',
            'name' => 'Ben',
            'EventsShopstaff' => array(
                'id' => '1',
                'event_id' => '1',
                'shopstaff_id' => '1'
            )
        ),
        (int) 1 => array(
            'id' => '2',
            'name' => 'Alex',
            'EventsShopstaff' => array(
                'id' => '2',
                'event_id' => '1',
                'shopstaff_id' => '2'
            )
        )
    )
),
(int) 1 => array(
ETC ....

イベント モデルには Shopstaff モデルとの HABTM 関係があり、配列を次のように抽出したいと思います。

array(
(int) 0 => array(
    'Event' => array(
        'id' => '1',
        'title' => 'Event title, Shopstaff: Ben, Alex',
    ),
),
(int) 1 => array(
ETC ....

問題は、set::combineShopStaff の数がわからないため、メソッドでそれを行うことができないことです。

何か案が ?

4

1 に答える 1

0

これまたは類似のものを試してください

$var - array();   
$var['Event'] = Hash::extract( $queryResult, '{n}.Event' );

必要なモデルをプルして、クエリから他のモデルをアンバインドしないのはなぜですか? Set::combine は foreach を使用しますが、これは場合によっては非効率的です

于 2013-10-09T14:34:20.663 に答える