Propel Behavior that allows multiple aggregate columns on a single table

1.0.0 2012-12-02 14:21 UTC


Build Status

This behavior is an almost exact copy of the bundled aggregate_column behavior, with the addition of allowing multiple aggregate columns on a single table - something not possible with the existing behavior.

This behaviors aims to be fully compatible with the original aggregate_column behavior.

Working with several aggregates

The syntax is pretty straightforward :

<behavior name="multiple_aggregate_column">
    <parameter name="count" value="2" />

    <parameter name="name1" value="amount_total" />
    <parameter name="foreign_table1" value="invoice_item" />
    <parameter name="expression1" value="SUM(price)" />

    <parameter name="name2" value="amount_paid" />
    <parameter name="foreign_table2" value="invoice_payment" />
    <parameter name="expression2" value="SUM(amount)" />
    <parameter name="condition2" value="status = 1" />

If you want to define several aggregates, the count parameter is mandatory. You will then be able to define as many aggregates as you want.

Working with a single aggregate

However, if you only have one aggregate, the count parameter can be omitted and the behavior recognises the same syntax as the old aggregate_column behavior:

<behavior name="multiple_aggregate_column">
    <parameter name="name" value="amount_total" />
    <parameter name="foreign_table" value="invoice_item" />
    <parameter name="expression" value="SUM(price)" />

Advanced usage

For further information, please refer to the official Aggregate Column Behavior documentation.


  • Nathan Jacobson: original author of this behavior. I used his work as a base, made it fully functionnal and tested it.


MIT, see the LICENCE file.