2012-06-05 20 views
1

因此,出于某种原因,我在beforeSave回调中对数据执行的任何操作(尽管它适用于单个记录)在使用saveMany时不起作用。CakePHP:beforeSave不使用saveMany?

什么给?如果我做到以下几点:

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

我可以看到,其实这 - $>数据不会被弄变了,但saveMany只是忽略它,并保存原始数据,而不是。

回答

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; 
} 
+0

我返回true。一个问题是,saveMany只使用数字索引,因此数据的格式与常规保存不同。 –

+0

看看上面的例子,测试和工作:) – Hoff

+0

@BenjaminAllison你试过了上面的代码还是让它工作? – Hoff