1

描述/说明:

在“添加事件”页面上,您可以添加多个日程。当您 saveAll() 时,它会保存 Event 数据和所有 Schedule(s) 数据 - 这工作正常。

但是然后,我想处理时间表数据并在“日期”表中构建单独的行。

Event hasMany Schedule
Schedule belongsTo Event
Schedule hasMany Date
Date belongsTo Schedule

所以 - 我正在加载 Date 模型,并重复通过每个 Schedule ,并处理/插入日期(基于重复、开始日期......等)。

我的问题/问题:

我需要每个时间表的日期(“schedule_id”字段)的ID。我如何在重复期间获得各个时间表的 ID?目前,我正在这样做:

foreach($this->data['Schedule'] as $i => $value) {
    $this->data['Date']['schedule_id'] = $this->Event->Schedule->id;
    //other stuff here
    $this->Date->saveAll($this->data['Date']);
}

但这在每个循环中都给了我相同的 id。

4

1 回答 1

1

问题是,$this->Event->Schedule->id它只保存插入的 LAST id。这就是为什么你总是得到相同的 id。

我想您正在事件控制器的添加功能中执行此 foreach 循环。如果您想要每个自己的插入 ID,则不应在您的 Event 上执行 saveAll ,而是遍历每个 Schedule(就像您已经做的那样)并将计划保存在那里。这可能看起来像这样:

foreach ($this->data['Schedule'] as $schedule) {
    $schedule['event_id'] = $this->Event->id; //this is needed because we don't do a saveAll on the Event anymore
    $this->Event->Schedule->save($schedule);

    //Here comes your part
    $this->data['Date']['schedule_id'] = $this->Event->Schedule->id;
    //other stuff here
    $this->Event->Schedule->Date->saveAll($this->data['Date']);
}

希望这可以帮助!

于 2011-05-11T09:34:51.597 回答