Zitat von
the_scrat
die SQL-Query kannst du damit nicht beeinflussen, die ist zum Zeitpunkt des Hooks bereits vollständig duchlaufen.
Ohne es getestet zu haben sehe ich das anders. Es ist nur das Query abgefeuert worden, dass die Felder aus der Feld-Tabelle holt. Der eigentlich relevante Query kommt erst später.
PHP-Code:
protected function fetchCatalogItems(array $arrFields, $strWhere ='',
array $arrParams =array(),
$strOrder ='', $intLimit =0,
$intOffset =0, array $arrJoins=array())
{
$table = $this->objCatalogType->tableName;
$arrFields = $this->processFieldSQL($arrFields, $this->catalog, $table);
// prepend columns to minimize the possibility of collisions when using JOINs
foreach ($this->systemColumns as $sysField)
{
$arrFields[] = sprintf('%s.%s AS %s',
$table, $sysField, $sysField);
}
if($this->objCatalogType->aliasField)
$arrFields[] = $this->objCatalogType->aliasField;
$strJoins = '';
if($arrJoins)
$strJoins = str_replace('{{table}}', $table, implode(' ', $arrJoins));
$strOrder = strlen($strOrder) ? " ORDER BY " . $strOrder : "";
$strWhereOrder = ($strWhere?" AND " . $strWhere:'') . $strOrder;
// pid
$params = array($this->objCatalogType->id);
$params = array_merge($params, $arrParams);
// Run Query
$objCatalogStmt = $this->Database->prepare(sprintf('SELECT %1$s,
"%2$s" AS catalog_name, %3$u AS parentJumpTo
FROM %4$s %5$s WHERE pid=? %6$s',
implode(',', $arrFields),
$this->objCatalogType->name,
$this->objCatalogType->jumpTo,
$table,
$strJoins,
$strWhereOrder));
// Limit result
if ($intLimit > 0)
$objCatalogStmt->limit($intLimit, $intOffset);
return $objCatalogStmt->execute($params);
}
Ja, da wird erst der eigentliche Query ausgeführt, logischerweise nach dem Hook. Also suchst du schonmal an der richtigen Stelle.
Allerdings habe ich hier grade keine Installation zum rumprobieren :-)
Lesezeichen