1

因此,出于某种原因,我在 beforeSave 回调中对数据所做的任何事情,虽然它适用于单个记录,但在使用 saveMany 时不起作用。

是什么赋予了?如果我执行以下操作:

public function beforeSave() {
    $this->data['foo'] = 'bar'
    die($this->data);
}

我可以看到实际上 $this->data 确实发生了变化,但 saveMany 只是忽略它并保存原始数据。

4

1 回答 1

3

确保在操作 $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;
}
于 2012-06-05T22:57:33.743 回答