在处理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
。
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,但是我想使用它,因为其他一些方法对我来说非常有用。
非常感谢任何帮助或指示!
由于
答案 0 :(得分:1)
你试过了吗?
$eventsGroups = $this->EventsGroup->findAllByGroupId($groupid);
$secEvents = Hash::extract($eventsGroups, '{n}.EventsGroup[event_id]' );
正如docs所说,要检索字段,您应该使用匹配器而不是表达式。并且不需要括号({}),它们用于构建像'{n}。{s}'这样的表达式......