/** * @param array $callback */ public function setCallback(array $callback) { if (($sql = call_user_func_array($callback, array())) && strval(trim($sql)) != '') { $this->query->registerRuntimeField('', new Entity\ExpressionField('__CALLBACK', '(CASE WHEN (' . $sql . ') THEN 1 ELSE 0 END)')); $this->query->addFilter('=__CALLBACK', 1); } }
function __construct(OrderQuery $query, array $select) { $this->select = $query->getSelectNamesAssoc() + array_flip($select); if (!$query->aggregated()) { $query->addAliasSelect('TYPE'); $query->addAliasSelect('SETTINGS'); $query->addAliasSelect('MULTIPLE'); $query->registerRuntimeField('PROPERTY_ID', new Entity\ExpressionField('PROPERTY_ID', 'DISTINCT(%s)', 'ID')); $sel = $query->getSelect(); array_unshift($sel, 'PROPERTY_ID'); $query->setSelect($sel); } }