本文整理汇总了PHP中Bitrix\Main\Entity\Query::getReplacedAliases方法的典型用法代码示例。如果您正苦于以下问题:PHP Query::getReplacedAliases方法的具体用法?PHP Query::getReplacedAliases怎么用?PHP Query::getReplacedAliases使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bitrix\Main\Entity\Query
的用法示例。
在下文中一共展示了Query::getReplacedAliases方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getInstanceByQuery
public static function getInstanceByQuery(Query $query, &$entity_name = null)
{
if ($entity_name === null) {
$entity_name = 'Tmp' . randString();
} elseif (!preg_match('/^[a-z0-9_]+$/i', $entity_name)) {
throw new Main\ArgumentException(sprintf('Invalid entity name `%s`.', $entity_name));
}
$query_string = '(' . $query->getQuery() . ')';
$query_chains = $query->getChains();
$replaced_aliases = array_flip($query->getReplacedAliases());
// generate fieldsMap
$fieldsMap = array('TMP_ID' => array('data_type' => 'integer', 'primary' => true));
foreach ($query->getSelect() as $k => $v) {
if (is_array($v)) {
// expression
$fieldsMap[$k] = array('data_type' => $v['data_type']);
} else {
if ($v instanceof ExpressionField) {
$fieldDefinition = $v->getName();
} else {
$fieldDefinition = is_numeric($k) ? $v : $k;
}
// better to initialize fields as objects after entity is created
$dataType = Field::getOldDataTypeByField($query_chains[$fieldDefinition]->getLastElement()->getValue());
$fieldsMap[$fieldDefinition] = array('data_type' => $dataType);
}
if (isset($replaced_aliases[$k])) {
$fieldsMap[$k]['column_name'] = $replaced_aliases[$k];
}
}
// generate class content
$eval = 'class ' . $entity_name . 'Table extends ' . __NAMESPACE__ . '\\DataManager {' . PHP_EOL;
$eval .= 'public static function getMap() {' . PHP_EOL;
$eval .= 'return ' . var_export($fieldsMap, true) . ';' . PHP_EOL;
$eval .= '}';
$eval .= 'public static function getTableName() {' . PHP_EOL;
$eval .= 'return ' . var_export($query_string, true) . ';' . PHP_EOL;
$eval .= '}';
$eval .= '}';
eval($eval);
return self::getInstance($entity_name);
}