因此,出于某种原因,我在 beforeSave 回调中对数据所做的任何事情,虽然它适用于单个记录,但在使用 saveMany 时不起作用。
是什么赋予了?如果我执行以下操作:
public function beforeSave() {
$this->data['foo'] = 'bar'
die($this->data);
}
我可以看到实际上 $this->data 确实发生了变化,但 saveMany 只是忽略它并保存原始数据。
确保在操作 $this->data 时包含模型名称,例如 $this->data['Event']['foo'] = bar. 确保该方法也返回 true,否则保存将失败。
编辑
我做了一个简单的例子,它似乎对我有用,请参见下面的代码。我的怀疑是,也许您错误地调用了 saveMany 并将整个 $this->request->data 对象传递给它,但是如果没有看到您的调用也很难猜测。
看法
<?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;
}