从cakephp中的HasMany关系计算beforeValidate回调数据

时间:2011-09-20 19:35:21

标签: cakephp

例如。 Invoice hasMany LineItems

创建新发票时,我们需要总结LineItem总计,以便设置发票总额。

这可以在afterSave回调中完成,但更愿意首先验证总数并避免使用(beforeValidate)进行额外的数据库查询。

我最好如何做到这一点?

1 个答案:

答案 0 :(得分:0)

只需在您的控制器中执行

$sum = array_sum(Set::classicExtract($this->data, 'Invoice.{n}.LineItems.price'));

$ sum将是您的发票总额。我假设$ this->数据的结构为

$this->data['Invoice']
      [0] => ['LineItems'] => ['price']

如果这不正确,请更改路径以满足您的需求或编辑您的帖子以显示$ this->数据的正确结构

希望它可以帮到你