描述/说明:
在“添加活动”页面上,您可以添加多个计划。当你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。
答案 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']);
}
希望这有帮助!