因此,出于某种原因,我对beforeSave回调中的数据所做的任何事情虽然适用于单个记录,但在使用saveMany时不起作用。
是什么给出的?如果我执行以下操作:
public function beforeSave() {
$this->data['foo'] = 'bar'
die($this->data);
}
我可以看到实际上$ this->数据确实会被更改,但是saveMany只是忽略它并保存原始数据。
答案 0 :(得分:3)
确保在操作$ this->数据时包含型号名称,例如$ this-> data ['Event'] ['foo'] = bar。确保方法也返回true,否则保存将失败。
修改强>
我掀起了一个简单的例子,它似乎对我有用,请参阅下面的代码。我的怀疑是,你可能错误地调用了saveMany并将整个$ this-> request->数据对象传递给它,但是如果没有看到你的电话也很难猜到。
查看强>
<?php echo $this->Form->create('ParentTable'); ?>
Record 1: <br />
<?php echo $this->Form->input('ParentTable.0.name'); ?>
Record 2: <br />
<?php echo $this->Form->input('ParentTable.1.name'); ?>
<?php echo $this->Form->end('Submit'); ?>
<强>控制器强>
public function index() {
if ($this->request->data) {
$this->ParentTable->saveMany($this->request->data['ParentTable']);
}
}
<强>模型强>
public function beforeSave() {
$this->data['ParentTable']['name'] .= ' modified';
return true;
}