فهرست منبع

#288 Fixed OQL issues, related to multi-columns usages

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@895 a333f486-631f-4898-b8df-5754b55c2be0
romainq 14 سال پیش
والد
کامیت
6573da5e19
2فایلهای تغییر یافته به همراه4 افزوده شده و 3 حذف شده
  1. 1 0
      core/dbobjectsearch.class.php
  2. 3 3
      core/metamodel.class.php

+ 1 - 0
core/dbobjectsearch.class.php

@@ -870,6 +870,7 @@ class DBObjectSearch
 			}
 			$aSelected[$sClassToSelect] = $aAliases[$sClassToSelect];
 		}
+		$oResultFilter->m_aClasses = $aAliases;
 		$oResultFilter->SetSelectedClasses($aSelected);
 
 		$oConditionTree = $oOqlQuery->GetCondition();

+ 3 - 3
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);