首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hash::extract with HABTM

Hash::extract with HABTM
EN

Stack Overflow用户
提问于 2012-11-20 10:02:42
回答 1查看 195关注 0票数 1

在处理HABTM时,我很难理解Hash::extract的语法。

我有一个find()返回的数据,看起来像这样:

代码语言:javascript
复制
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文档的示例如下所示:

代码语言:javascript
复制
$users = $this->User->find("all");
$results = Hash::extract($users, '{n}.User.id');

基于此,我尝试了:

代码语言:javascript
复制
$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就能得到我想要的东西的方法,但我想使用它,因为其他一些方法将来也会对我有用。

如有任何帮助或建议,我们将不胜感激!

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-07 02:08:59

您是否尝试过:

代码语言:javascript
复制
 $eventsGroups = $this->EventsGroup->findAllByGroupId($groupid);
 $secEvents = Hash::extract($eventsGroups, '{n}.EventsGroup[event_id]' );

正如docs所说,要检索字段,应该使用匹配器,而不是表达式。并且括号({})不是必需的,它们用于构建像‘{n}.{s}’这样的表达式...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13465552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档