CakePHP 数学计算领域?

Posted

技术标签:

【中文标题】CakePHP 数学计算领域?【英文标题】:CakePHP mathematic-calculation field? 【发布时间】:2009-10-20 04:11:09 【问题描述】:

(数据库结构如Cakephp select default value in SELECT input)

所以,我在 CakePHP 中有两个表:Trees 和 Leafs。每个 Leaf 对应的树都有一个 tree_id。每片叶子也有一个数字value。我为树烘焙的默认视图仅列出了表格中的所有树。有没有办法在该视图的表中添加一个动态列,对树的所有叶子进行求和并在表中显示总和,以及显示树的叶子数量的另一个字段?

示例:

Leafs

Id   |  Tree Id  |  Leaf value
-----+-----------+---------------
24   |  1        | 19
70   |  1        | 33
121  |  1        | 30

Trees

Id   |  Tree  |  Number of leafs  |  Sum of leafs  |  Actions
-----+--------+-------------------+----------------+-------------------
1    |  foo   |  120              |  7270          |  View Edit Delete
2    |  bar   |  72               |  4028          |  View Edit Delete

【问题讨论】:

【参考方案1】:

两个想法:

每次需要时,使用 Containable behavior 动态获取总和字段,例如(我的脑海中):

$this->Tree->find('all', array(
    ...
    'contain' => array(
        'Leaf' => array(
            'fields' => array('SUM(Leaf.value)'),
            'group'  => array('Leaf.tree_id')
        )
    )
);

或者在 Tree 模型中创建一个新列,例如 leaf_values,并在每次更改 Leaf 模型中的内容时更新它:

// Leaf model
function afterSave() 
    $sum = /* calculate sum */;
    $this->Tree->updateAll(
        array('Tree.leaf_values' => $sum),
        array('Tree.id' => $this->data['Leaf']['tree_id'])
    );


function afterDelete() 
    // same for afterDelete

【讨论】:

【参考方案2】:

我认为您不能在可包含调用中使用组。

【讨论】:

1.3 应该支持这个:teknoid.wordpress.com/2009/10/06/…

以上是关于CakePHP 数学计算领域?的主要内容,如果未能解决你的问题,请参考以下文章

计算数学领域一些期刊(持续更新)

计算机与数学

Mathematica 和 MATLABMaple 并称为三大数学软件

《天天数学》连载61:三月一日

《天天数学》连载61:三月一日

Python的数学计算库scipy介绍