在CakePHP中获取多个插入项的ID有很多项

在CakePHP中获取多个插入项的ID有很多项,cakephp,cakephp-1.3,has-many,saving-data,Cakephp,Cakephp 1.3,Has Many,Saving Data,说明/解释: 在“添加事件”页面上,可以添加多个计划。当您saveAll()时,它会保存事件数据和所有计划数据-这工作正常 但是,我想处理日程数据,并在“dates”表中构建单独的行 所以-我正在加载日期模型,并重复通过的每个计划,处理/插入日期(基于重复、开始日期等) 我的问题: 我需要每个计划的日期id(“计划id”字段)。在重复过程中,如何获取各个计划的id?目前,我正在这样做: foreach($this->data['Schedule'] as $i => $value)

说明/解释:

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

但是,我想处理日程数据,并在“dates”表中构建单独的行

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

我的问题:

我需要每个计划的日期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。

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

我假设您正在事件控制器的add函数中执行这个foreach循环。 如果您想要每个自己的insert id,您不应该在事件上执行saveAll,而应该遍历每个计划(就像您已经做的那样)并将计划保存在那里。这可能是这样的:

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']);
}

希望这有帮助

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

我假设您正在事件控制器的add函数中执行这个foreach循环。 如果您想要每个自己的insert id,您不应该在事件上执行saveAll,而应该遍历每个计划(就像您已经做的那样)并将计划保存在那里。这可能是这样的:

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']);
}

希望这有帮助

它确实有用,谢谢你。唯一的问题是,它不会像saveAll()那样同时验证它们。是否有一种方法可以先验证它们,然后进行这种类型的保存?非常感谢你的帮助!我相信我回答了我自己的问题-您可以手动验证-这里的信息:它确实有帮助,谢谢。唯一的问题是,它不会像saveAll()那样同时验证它们。是否有一种方法可以先验证它们,然后进行这种类型的保存?非常感谢你的帮助!我相信我已经回答了我自己的问题-您可以手动验证-信息如下: