1

HABTM を扱うときの Hash::extract の構文を理解するのに苦労しています。

次のような find() から返されるデータがあります。

array(
    (int) 0 => array(
        'EventsGroup' => array(
            'id' => '34',
            'event_id' => '5',
            'group_id' => '1'
        )
    ),
    (int) 1 => array(
        'EventsGroup' => array(
            'id' => '29',
            'event_id' => '2',
            'group_id' => '1'
        )
    )
)

次のような配列を取得しようとしています。array(x,y,z)ここで、x、y、z はevent_id's です。

Cake のドキュメントの例は次のようになります。

$users = $this->User->find("all");
$results = Hash::extract($users, '{n}.User.id');

それに基づいて、私は試しました:

$eventsGroups = $this->EventsGroup->findAllByGroupId($groupid);
$secEvents = Hash::extract($eventsGroups, '{n}.{EventsGroup}.event_id' );
$secEvents2 = Hash::extract($eventsGroups, '{n}.EventsGroup.event_id' );
$secEvents3 = Hash::extract($eventsGroups, '{n}.[text=EventsGroup].event_id);

どれもうまくいきませんでした。

Hash::extract を使用せずに必要なものを取得する方法を見つけましたが、他の方法のいくつかが後で役立つので、それを使用したいと思います。

どんな助けや指針も大歓迎です!

ありがとう

4

1 に答える 1

1

やってみました:

 $eventsGroups = $this->EventsGroup->findAllByGroupId($groupid);
 $secEvents = Hash::extract($eventsGroups, '{n}.EventsGroup[event_id]' );

ドキュメントがフィールドを取得すると言うように、式ではなくマッチャーを使用する必要があります。また、括弧 ({}) は必要ありません。'{n}.{s}' のような式を作成するために使用されます...

于 2013-09-06T18:08:58.597 に答える