Cakephp使用Set类从key开始获取数据

时间:2011-12-20 13:36:47

标签: php cakephp

我正在使用Cake的Setphp来格式化find返回的数组,但似乎无法找到一种方法让计数器从零开始,并自动增加数组键,所以它就像

[0] => 3
[1] => 6
[2] => 12

我目前正在使用以下查询从HasAndBelongsToMany表中获取数据。

$interest_ids = Set::combine($this->User->Interestsub->find('threaded', array
                (
                    'conditions' => array
                    (
                        'Interestsub.name' => $interests
                    ),
                    //'fields' => array('Interestsub.id'),
                    'recursive' => -1
                )
            ),
            '{n}.Interestsub.id',
            '{n}.Interestsub.id'
            );

我之所以需要这个,是因为我正在尝试将返回的数组作为更大的父数组的一部分,准备为SaveAll函数保存。要正确格式化,我需要在嵌套数组下面出现:

[0] => Array
(
     [interestssub_id] => 12
     [user_id] => 2
)
[1] => Array
(
     [interestssub_id] => 22
     [user_id] => 2
)
[2] => Array
(
     [interestssub_id] => 32
     [user_id] => 2
)

有没有办法可以像上面那样使用Combine类格式化返回的数组?

1 个答案:

答案 0 :(得分:0)

在这种情况下,没有真正的理由使用Set类。只需使用好的老式php:

$threaded = $this->User->Interestsub->find('threaded', array(
  'conditions' => array(
    'Interestsub.name' => $interests
  ),
  'recursive' => -1
));

$interest_ids = array();
foreach ($threaded as $thread) {
  $interest_ids[] = array(
    'interestssub_id' => $thread['Interestsub.id'],
    'interestssub_id' => $thread['Interestsub.user_id']
  );
}