mirror of
https://github.com/Combodo/iTop.git
synced 2026-03-06 09:34:13 +01:00
Portal: ManageBrick optimization by loading "always_in_tables" attributes to avoid unnecessary object reloads
SVN:trunk[4713]
This commit is contained in:
@@ -33,6 +33,7 @@ use \AttributeSubItem;
|
||||
use \DBSearch;
|
||||
use \DBObjectSearch;
|
||||
use \DBObjectSet;
|
||||
use \DBObject;
|
||||
use \FieldExpression;
|
||||
use \BinaryExpression;
|
||||
use \VariableExpression;
|
||||
@@ -301,12 +302,13 @@ class ManageBrickController extends BrickController
|
||||
|
||||
// Preparing data sets
|
||||
$aSets = array();
|
||||
foreach ($aQueries as $sKey => $oQuery)
|
||||
/** @var DBSearch $oQuery */
|
||||
foreach ($aQueries as $sKey => $oQuery)
|
||||
{
|
||||
// Checking if we have a valid query
|
||||
if ($oQuery !== null)
|
||||
{
|
||||
// Setting query pagination if needed
|
||||
// Setting query pagination if needed
|
||||
if ($sDataLoading === AbstractBrick::ENUM_DATA_LOADING_LAZY)
|
||||
{
|
||||
// Retrieving parameters
|
||||
@@ -327,7 +329,22 @@ class ManageBrickController extends BrickController
|
||||
{
|
||||
$oSet = new DBObjectSet($oQuery);
|
||||
}
|
||||
$oSet->OptimizeColumnLoad(array($oQuery->GetClassAlias() => $aColumnsAttrs));
|
||||
|
||||
// Adding always_in_tables attributes
|
||||
$aColumnsToLoad = array($oQuery->GetClassAlias() => $aColumnsAttrs);
|
||||
foreach($oQuery->GetSelectedClasses() as $sAlias => $sClass)
|
||||
{
|
||||
/** @var AttributeDefinition $oAttDef */
|
||||
foreach(MetaModel::ListAttributeDefs($sClass) as $sAttCode => $oAttDef)
|
||||
{
|
||||
if($oAttDef->AlwaysLoadInTables())
|
||||
{
|
||||
$aColumnsToLoad[$sAlias][] = $sAttCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$oSet->OptimizeColumnLoad($aColumnsToLoad);
|
||||
$oSet->SetOrderByClasses();
|
||||
$aSets[$sKey] = $oSet;
|
||||
}
|
||||
@@ -357,6 +374,7 @@ class ManageBrickController extends BrickController
|
||||
// Getting items
|
||||
$aItems = array();
|
||||
// ... For each item
|
||||
/** @var DBObject $oCurrentRow */
|
||||
while ($oCurrentRow = $oSet->Fetch())
|
||||
{
|
||||
// ... Retrieving item's attributes values
|
||||
@@ -393,7 +411,8 @@ class ManageBrickController extends BrickController
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** @var AttributeDefinition $oAttDef */
|
||||
$oAttDef = MetaModel::GetAttributeDef($sCurrentClass, $sItemAttr);
|
||||
if ($oAttDef->IsExternalKey())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user