获取多个ID在CakePHP中插入hasMany项

时间:2011-05-10 21:27:32

标签: cakephp cakephp-1.3 has-many saving-data

描述/说明:

在“添加活动”页面上,您可以添加多个计划。当你saveAll()时,它会保存事件数据和所有Schedule(s)数据 - 这是正常的。

但是,我想处理日程安排数据并在“日期”表格中构建单独的行。

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

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

我的问题/问题:

我需要每个日程表的ID为日期(“schedule_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。

1 个答案:

答案 0 :(得分:1)

问题是,$this->Event->Schedule->id仅保存插入的最后一个ID。这就是为什么你总是得到相同的身份。

我想你正在使用Events-controller的add-function中的foreach循环。 如果你想要每个自己的insert-id,你不应该在你的事件上做一个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']);
}

希望这有帮助!