Revision: 294
http://sourceforge.net/p/beeframework/code/294
Author: m_plomer
Date: 2015-03-01 17:46:21 +0000 (Sun, 01 Mar 2015)
Log Message:
-----------
Persistence:
- GenericDaoBase: added aggregate field mappings
Modified Paths:
--------------
trunk/framework/Bee/Persistence/Doctrine2/GenericDaoBase.php
Modified: trunk/framework/Bee/Persistence/Doctrine2/GenericDaoBase.php
===================================================================
--- trunk/framework/Bee/Persistence/Doctrine2/GenericDaoBase.php 2015-02-27 21:01:00 UTC (rev 293)
+++ trunk/framework/Bee/Persistence/Doctrine2/GenericDaoBase.php 2015-03-01 17:46:21 UTC (rev 294)
@@ -53,6 +53,11 @@
*/
private $defaultOrderMapping = array();
+ /**
+ * @var array
+ */
+ private $fieldDisaggregations = array();
+
/**
* @param mixed $id
* @throws UnexpectedValueException
@@ -173,7 +178,7 @@
$internalFilterableFields = array();
if(Strings::hasText($restrictionHolder->getFilterString())) {
foreach($restrictionHolder->getFilterableFields() as $field) {
- $internalFilterableFields[] = $this->transformAndAddAliasForPathExpression($queryBuilder, $field);
+ $internalFilterableFields = array_merge($internalFilterableFields, $this->getFieldDisaggregation($this->transformAndAddAliasForPathExpression($queryBuilder, $field)));
}
}
$internalFilters = array();
@@ -189,7 +194,7 @@
if(count($orderAndLimitHolder->getOrderMapping()) > 0) {
$internalMapping = array();
foreach($orderAndLimitHolder->getOrderMapping() as $field => $dir) {
- $internalMapping[$this->transformAndAddAliasForPathExpression($queryBuilder, $field)] = $dir;
+ $internalMapping = array_merge($internalMapping, array_fill_keys($this->getFieldDisaggregation($this->transformAndAddAliasForPathExpression($queryBuilder, $field)), $dir));
}
$orderAndLimitHolder = new GenericDaoBase_OrderAndLimitWrapper($orderAndLimitHolder, $internalMapping);
@@ -358,6 +363,31 @@
public function setDefaultOrderMapping(array $defaultOrderMapping) {
$this->defaultOrderMapping = $defaultOrderMapping;
}
+
+ /**
+ * @return array
+ */
+ public function getFieldDisaggregations() {
+ return $this->fieldDisaggregations;
+ }
+
+ /**
+ * @param array $fieldDisaggregations
+ */
+ public function setFieldDisaggregations($fieldDisaggregations) {
+ $this->fieldDisaggregations = $fieldDisaggregations;
+ }
+
+ /**
+ * @param $aggregateFieldName
+ * @return array
+ */
+ public function getFieldDisaggregation($aggregateFieldName) {
+ if(array_key_exists($aggregateFieldName, $this->fieldDisaggregations)) {
+ return $this->fieldDisaggregations[$aggregateFieldName];
+ }
+ return array($aggregateFieldName);
+ }
}
class GenericDaoBase_OrderAndLimitWrapper implements IOrderAndLimitHolder {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|