data
data copied to clipboard
AggregateModel inheriting reference on setGroupBy fields
If you create an aggregate Model an group by certain fields which are hasOne references in the source model, it would be convenient to also have/keep those references in the aggregate Model, so if source model has a hasOne reference called 'tax_rule_id':
$aggregateModel = new \Atk4\Data\Model\AggregateModel($sourcemodel);
$aggregateModel->setGroupBy(['tax_rule_id', 'tax_rate'], [
'total_gross' => ['expr' => 'sum([total_gross])'],
'total_net' => ['expr' => 'sum([total_net])'],
'total_tax' => ['expr' => 'sum([total_tax])'],
]);
foreach ($aggregateModel as $taxposition) {
$result = $taxposition->ref('tax_rule_id')->get('revenue_account_id');
}
the aggregateModel should then allow $tax_rule_name = $taxposition->ref('tax_rule_id')->getTitle();
for example.
discussion:
I think no field (nor reference, user action, ...) should be added automatically, because if anything is added automatically:
- it will select extra data (worsen performance)
- phpdoc (for hintable) must be always declared manually
However, when such field ())ref, ...) is added to the outer model, the configured properties (class, type, ...) must be inherited as defaults.