diff --git a/core/dbobjectsearch.class.php b/core/dbobjectsearch.class.php index ff2993864..479618ca1 100644 --- a/core/dbobjectsearch.class.php +++ b/core/dbobjectsearch.class.php @@ -870,6 +870,7 @@ class DBObjectSearch } $aSelected[$sClassToSelect] = $aAliases[$sClassToSelect]; } + $oResultFilter->m_aClasses = $aAliases; $oResultFilter->SetSelectedClasses($aSelected); $oConditionTree = $oOqlQuery->GetCondition(); diff --git a/core/metamodel.class.php b/core/metamodel.class.php index fe531695b..31105cace 100644 --- a/core/metamodel.class.php +++ b/core/metamodel.class.php @@ -1619,7 +1619,7 @@ abstract class MetaModel $oConditionTree = $oFilter->GetCriteria(); $oKPI = new ExecutionKPI(); - $oSelect = self::MakeQuery($oFilter->GetSelectedClasses(), $oConditionTree, $aClassAliases, $aTableAliases, $aTranslation, $oFilter); + $oSelect = self::MakeQuery($oFilter->GetSelectedClasses(), $oConditionTree, $aClassAliases, $aTableAliases, $aTranslation, $oFilter, array(), array(), true /* main query */); $oKPI->ComputeStats('MakeQuery (select)', $sOqlQuery); self::$m_aQueryStructCache[$sOqlId] = clone $oSelect; @@ -1751,7 +1751,7 @@ abstract class MetaModel return $oSelect->RenderUpdate($aScalarArgs); } - private static function MakeQuery($aSelectedClasses, &$oConditionTree, &$aClassAliases, &$aTableAliases, &$aTranslation, DBObjectSearch $oFilter, $aExpectedAtts = array(), $aValues = array()) + private static function MakeQuery($aSelectedClasses, &$oConditionTree, &$aClassAliases, &$aTableAliases, &$aTranslation, DBObjectSearch $oFilter, $aExpectedAtts = array(), $aValues = array(), $bIsMainQuery = false) { // Note: query class might be different than the class of the filter // -> this occurs when we are linking our class to an external class (referenced by, or pointing to) @@ -1909,7 +1909,7 @@ abstract class MetaModel // Translate the conditions... and go // - if ($bIsOnQueriedClass) + if ($bIsMainQuery) { $oConditionTranslated = $oConditionTree->Translate($aTranslation); $oSelectBase->SetCondition($oConditionTranslated);