从CakePHP中的相关项目项中获取一个项目的总数


Get the total of a Project from related project items in CakePHP

在CakePHP中,我有一个模型Project和一个模型ProjectRecord:

<?php
class Project extends AppModel {
    public $useTable = 'project';
    public $hasOne = array( 
        'Customer' => array( 
                'foreignKey' => false, 
                'conditions' => array('Project.customer_id = Customer.id') 
        )
    ); 
    public $hasMany = array(
        'ProjectRecord' => array(
            'className' => 'ProjectRecord',
        )
    );
}
?>

模型项目记录:

<?php
App::uses('AppModel', 'Model');
class ProjectRecord extends AppModel {
    public $useTable = 'project_record';
    public $hasOne = 'Project';
}
?>

ProjectRecord保存值:"金额"、"成本"answers"增值税"(百分比)

在我的项目索引中,我想查看一个项目的总数。因此,我必须收集与一个项目相关的所有ProjectRecord,然后将金额与成本和增值税相乘,然后将所有这些数字计算为一个值。

我知道这与虚拟字段有关,但我无法正确检索那些ProjectRecords。

我试图添加一个Helper,但无论我做了什么,我都收到了无法加载表(Project)的警告。

我不会在每次访问产品记录时计算这个值。我认为更好的解决方案是计算ProjectRecord::afterSave()回调中的值,并将总和保存到刚刚保存的ProjectRecord的关联Project(添加一个像total_sum或任何您喜欢的字段)。这样可以避免额外的复杂性或额外的查询。