Revision: 296
http://sourceforge.net/p/beeframework/code/296
Author: m_plomer
Date: 2015-03-04 11:14:17 +0000 (Wed, 04 Mar 2015)
Log Message:
-----------
Persistence:
- GenericDaoBase: fixed handling of already-prefixed fields / function expressions during field disaggregation / canonicalization
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-03-03 07:12:13 UTC (rev 295)
+++ trunk/framework/Bee/Persistence/Doctrine2/GenericDaoBase.php 2015-03-04 11:14:17 UTC (rev 296)
@@ -166,11 +166,10 @@
* @param array $externalFieldValueMapping
* @param array $internalFieldValueMapping
* @param QueryBuilder $queryBuilder
- * @param string $prefix
*/
- protected final function disaggregateAndInternalizeFieldValueMapping(array $externalFieldValueMapping, array &$internalFieldValueMapping, QueryBuilder $queryBuilder, $prefix = '') {
+ protected final function disaggregateAndInternalizeFieldValueMapping(array $externalFieldValueMapping, array &$internalFieldValueMapping, QueryBuilder $queryBuilder) {
foreach ($externalFieldValueMapping as $field => $value) {
- array_walk($this->getFieldDisaggregation($field, $prefix), function ($field) use (&$internalFieldValueMapping, $queryBuilder, $value) {
+ array_walk($this->getFieldDisaggregation($field), function ($field) use (&$internalFieldValueMapping, $queryBuilder, $value) {
$internalFieldValueMapping[$this->internalizeFieldExpression($field, $queryBuilder)] = $value;
});
}
@@ -180,14 +179,12 @@
* @param array $externalFieldList
* @param array $internalFieldList
* @param QueryBuilder $queryBuilder
- * @param string $prefix
*/
- protected final function disaggregateAndInternalizeFieldList(array $externalFieldList, array &$internalFieldList, QueryBuilder $queryBuilder, $prefix = '') {
- $prefix = $prefix ?: $this->getEntityAlias() . '.';
+ protected final function disaggregateAndInternalizeFieldList(array $externalFieldList, array &$internalFieldList, QueryBuilder $queryBuilder) {
foreach ($externalFieldList as $field) {
- $internalFieldList = array_merge($internalFieldList, array_map(function ($field) use (&$queryBuilder, $prefix) {
+ $internalFieldList = array_merge($internalFieldList, array_map(function ($field) use (&$queryBuilder) {
return $this->internalizeFieldExpression($field, $queryBuilder);
- }, $this->getFieldDisaggregation($field, $prefix)));
+ }, $this->getFieldDisaggregation($field)));
}
}
@@ -447,11 +444,13 @@
/**
* @param $aggregateFieldName
- * @param string $prefix
* @return array
*/
- protected function getFieldDisaggregation($aggregateFieldName, $prefix = '') {
- $aggregateFieldName = ($prefix ?: $this->getEntityAlias() . '.') . $aggregateFieldName;
+ protected function getFieldDisaggregation($aggregateFieldName) {
+ // prefix only if simple path expression not prefixed with entity alias and not a function expression
+ if(!preg_match('#^(?:' . $this->getEntityAlias() . '\.|\w+\()#', $aggregateFieldName)) {
+ $aggregateFieldName = $this->getEntityAlias() . '.' . $aggregateFieldName;
+ }
if (array_key_exists($aggregateFieldName, $this->fieldDisaggregations)) {
return $this->fieldDisaggregations[$aggregateFieldName];
}
@@ -531,11 +530,6 @@
*/
private $internalFilterableFields;
-// /**
-// * @var array
-// */
-// private $internalFilters;
-
/**
* @param $wrappedRestrictionHolder
* @param $internalFilterableFields
@@ -543,7 +537,6 @@
function __construct(IRestrictionHolder $wrappedRestrictionHolder, array $internalFilterableFields/*, array $internalFilters*/) {
$this->wrappedRestrictionHolder = $wrappedRestrictionHolder;
$this->internalFilterableFields = $internalFilterableFields;
-// $this->internalFilters = $internalFilters;
}
/**
@@ -564,7 +557,6 @@
* @return array
*/
public function getFilters() {
-// return $this->internalFilters;
return $this->wrappedRestrictionHolder->getFilters();
}
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|