Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cakephp中HasMany关系中基于beforeValidate回调的数据的计算_Cakephp - Fatal编程技术网

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

cakephp中HasMany关系中基于beforeValidate回调的数据的计算,cakephp,Cakephp,发票有许多行项目 创建新发票时,我们需要汇总行项目总计,以便设置发票总计 这可以在afterSave回调中完成,但更希望先验证总计,并避免使用beforeValidate进行额外的DB查询 如何才能最好地实现这一点?只需在控制器中执行即可 $sum = array_sum(Set::classicExtract($this->data, 'Invoice.{n}.LineItems.price')); $sum将是您的发票总额。我假设$this->data的结构是 $this->d

发票有许多行项目

创建新发票时,我们需要汇总行项目总计,以便设置发票总计

这可以在afterSave回调中完成,但更希望先验证总计,并避免使用beforeValidate进行额外的DB查询


如何才能最好地实现这一点?

只需在控制器中执行即可

$sum = array_sum(Set::classicExtract($this->data, 'Invoice.{n}.LineItems.price'));
$sum将是您的发票总额。我假设$this->data的结构是

$this->data['Invoice']
      [0] => ['LineItems'] => ['price']
如果不正确,请更改路径以满足您的需要,或者编辑您的帖子以显示$this->data的正确结构


希望它能帮助您

所有数据都在父发票模型中的$this->数据中,因此只需在行项目中循环并应用数学。