CakePHP - 一个页面上的两个模型,无法获得此 - > request->数据自动化字段填充

时间:2013-02-14 22:33:13

标签: cakephp cakephp-2.0

我有两个控制器:事件和结果。事件有很多结果,结果属于事件。我可以保存得很好,但是当我去编辑时,我只能获得表格的事件部分的信息,自动进入。

我构建了结果表单信息,如下所示:

$option_number = 5;
        for ($i = 0; $i < $option_number; $i++) {
           echo $this->Form->select("Result.{$i}.object_id", $qual_options, array('empty' => false, 'class' => 'result-name'));
           echo $this->Form->hidden("Result.{$i}.id");
           echo $this->Form->hidden("Result.{$i}.type", array('value' => 'qual'));
           echo $this->Form->hidden("Result.{$i}.action", array('value' => 'add')); ?>
}

在后端,当我这样做以获得自动化人口时:

if ($this->request->is('get')) {
            $this->request->data = $this->Event->findById($id);
}

它工作正常,但我无法弄清楚如何让它显示结果。我尝试了很多东西,最有可能的是:

$this->request->data['Result'] = $this->Result->findAllByEventId($id);

有了这个,我最终得到了一个数据结构,如:

[Result] => Array
        (
            [0] => Array
                (
                    [Result] => Array
                        (
                            [id] => 1
                            [object_id] => 1
                            [type] => qual
                            [action] => add
                            [amt] => 10
                            [event_id] => 1
                        )

                )

            [1] => Array
                (
                    [Result] => Array
                        (
                            [id] => 2
                            [object_id] => 2
                            [type] => qual
                            [action] => add
                            [amt] => 1
                            [event_id] => 1
                        )

                )         

            ... etc.

        )

)

这绝对看起来很可疑,我似乎无法操纵它起作用。

更新我应该提到这个;当我保存它时,这就是我的数据,我想模仿它!

[Result] => Array
    (
        [0] => Array
            (
                [object_id] => 1
                [type] => qual
                [action] => add
                [amt] => 0
                [event_id] => 3
            )

        [1] => Array
            (
                [object_id] => 1
                [type] => qual
                [action] => add
                [amt] => 1
                [event_id] => 3
            )

你可以看到每个数字键后面都有信息;相反,我的数字键也有一个数组INSIDE他们名称结果,我不知道如何让它正常消失! :}我总是可以循环遍历并以CakePHP想要的格式构建它,但我想要正确地完成它。上面的那一行是需要改变的,但我已经没有想法了。

1 个答案:

答案 0 :(得分:0)

如何仅使用find('first')来对抗此事件?由于它是hasMany,它将在一个[Result]键中返回结果模型,其中包含许多数字键。

$this->request->data = $this->Event->find('first', array(
  'conditions' => array(
    'Event.id' => $id
  ),
  'contain' => array(
    'Result'
  )
));

这将返回如下内容:

array(
  'Event' => array(
    'id' => 1,
    'name' => 'event name'
  ),
  'Result' => array(
    0 => array(
      'id' => 1,
      ...
    ),
    1 => array(
      'id' => 2,
      ...
    )
  )
);

如果需要,您可以取消设置事件键。