CakePHP matematik hesaplama alan?

2 Cevap php

(Gibi Veritabanı yapısı http://stackoverflow.com/questions/1545764/cakephp-select-default-value-in-select-input)

Ağaçlar ve Yaprakları: Yani, iki CakePKP'deki tablo var. Her bir yaprak olarak karşılık gelen ağacı için bir tree_id vardır. Her bir yaprak aynı zamanda bir sayısal-value vardır. Ben ağaçları için pişmiş varsayılan görünümü sadece bir tablodaki tüm ağaçlarını listeler. O ağacın bütün yapraklarını toplar ve tablo toplamı, hem de bir ağaç olan yapraklarının sayısını gösteren başka bir alan görüntüler görünümün tablo dinamik bir sütun eklemek için bir yolu var mı?

Örnek:

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

2 Cevap

Iki fikir:

Özetlenebilir alan, (kafamın üst kapalı) gibi, Containable behavior kullanarak ihtiyaç dinamik, her zaman getir:

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

Veya leaf_values gibi ağacı modelini yeni bir sütun oluşturmak ve bunu size Yaprak modelinde bir şey değiştirmek her zaman güncelleme:

// 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
}

Ben containable çağrılar içinde grubunu kullanabilirsiniz sanmıyorum.