Leo,
Одна вещь, которую вы можете сделать, это изменить метод afterFind () в вашей модели.Это будет пересчитывать итоговую сумму в любое время, когда вы получите счет (стоимость обработки во время выполнения), но будет означать, что вы не сохраняете его в таблице счетов, что, по-видимому, и следует избегать (исправьте, если я ошибаюсь).
Попробуйте это:
class Invoice extends AppModel {
// .. other stuff
function afterFind() {
parent::afterFind();
$total = 0;
foreach( $this->data['Invoice']['InvoiceItems'] as $item )
$total += ($item['cost'] * $item['quantity']);
$this->data['Invoice']['total'] = $total;
}
}
Возможно, я испортил массивы в отношении hasMany (линия foreach), но я надеюсь, что вы получите суть.HTH,
Travis