Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Campo de cálculo matemático do CakePHP?


Duas ideias:

Busque o campo somado dinamicamente sempre que precisar dele usando o Comportamento de contêiner , tipo (em cima da minha cabeça):
$this->Tree->find('all', array(
    ...
    'contain' => array(
        'Leaf' => array(
            'fields' => array('SUM(Leaf.value)'),
            'group'  => array('Leaf.tree_id')
        )
    )
);

Ou crie uma nova coluna no modelo Tree como leaf_values e atualize-o toda vez que você alterar algo no modelo 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
}