本文整理汇总了PHP中Doctrine_Query::getSqlTableAlias方法的典型用法代码示例。如果您正苦于以下问题:PHP Doctrine_Query::getSqlTableAlias方法的具体用法?PHP Doctrine_Query::getSqlTableAlias怎么用?PHP Doctrine_Query::getSqlTableAlias使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Doctrine_Query
的用法示例。
在下文中一共展示了Doctrine_Query::getSqlTableAlias方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: joinForTableProxy
public function joinForTableProxy(Doctrine_Query $q, array $options = array())
{
$options = Doctrine_Lib::arrayDeepMerge($this->_options, $options);
$q->getRootAlias();
// fix for initialize root
if (empty($options['parentTable'])) {
$parentTable = $q->getRoot();
$parentTableAlias = $q->getRootAlias();
} else {
$parentTable = Doctrine::getTable($options['parentTable']);
$parentTableAlias = empty($options['parentTableAlias']) ? $q->getSqlTableAlias(sfInflector::tableize($options['parentTable'])) : $options['parentTableAlias'];
}
if (!empty($options['componentAlias'])) {
$componentAlias = $options['componentAlias'];
} elseif ($parentTable->hasRelation($this->_table->getComponentName())) {
$componentAlias = $this->_table->getComponentName();
} else {
$componentName = $this->_table->getComponentName();
$relations = $parentTable->getRelations();
foreach ($relations as $relation) {
if ($relation['class'] == $componentName) {
$componentAlias = $relation['alias'];
break;
}
}
}
$tableAlias = empty($options['tableAlias']) ? $this->_table->getAlias() : $options['tableAlias'];
$q->addSqlTableAlias($tableAlias, sfInflector::tableize($this->_table->getComponentName()));
$q->leftJoin($parentTableAlias . '.' . $componentAlias . ' ' . $tableAlias);
if ($options['withI18n'] == true && $this->_table->hasTemplate('Doctrine_Template_I18nMod')) {
$cultures = empty($options['cultures']) ? sfContext::getInstance()->getUser()->getCulture() : $options['cultures'];
$chunkWith = implode(' AND ', array_fill(0, count($cultures), ' ' . $tableAlias . '_trans.lang = ? '));
$q->leftJoin($tableAlias . '.Translation ' . $tableAlias . '_trans WITH ' . $chunkWith, $cultures);
}
return $q;
}
示例2: modifyLimitQuery
/**
* Adds an adapter-specific LIMIT clause to the SELECT statement.
* [ original code borrowed from Zend Framework ]
*
* License available at: http://framework.zend.com/license
*
* Copyright (c) 2005-2008, Zend Technologies USA, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* * Neither the name of Zend Technologies USA, Inc. nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @param string $query
* @param mixed $limit
* @param mixed $offset
* @link http://lists.bestpractical.com/pipermail/rt-devel/2005-June/007339.html
* @return string
*/
public function modifyLimitQuery($query, $limit = false, $offset = false, $isManip = false, $isSubQuery = false, Doctrine_Query $queryOrigin = null)
{
if ($limit === false || !($limit > 0)) {
return $query;
}
$orderby = stristr($query, 'ORDER BY');
if ($offset !== false && $orderby === false) {
throw new Doctrine_Connection_Exception("OFFSET cannot be used in MSSQL without ORDER BY due to emulation reasons.");
}
$count = intval($limit);
$offset = intval($offset);
if ($offset < 0) {
throw new Doctrine_Connection_Exception("LIMIT argument offset={$offset} is not valid");
}
$orderbySql = $queryOrigin->getSqlQueryPart('orderby');
$orderbyDql = $queryOrigin->getDqlPart('orderby');
if ($orderby !== false) {
$orders = $this->parseOrderBy(implode(', ', $queryOrigin->getDqlPart('orderby')));
for ($i = 0; $i < count($orders); $i++) {
$sorts[$i] = stripos($orders[$i], ' desc') !== false ? 'DESC' : 'ASC';
$orders[$i] = trim(preg_replace('/\\s+(ASC|DESC)$/i', '', $orders[$i]));
list($fieldAliases[$i], $fields[$i]) = strstr($orders[$i], '.') ? explode('.', $orders[$i]) : array('', $orders[$i]);
$columnAlias[$i] = $queryOrigin->getSqlTableAlias($queryOrigin->getExpressionOwner($orders[$i]));
$cmp = $queryOrigin->getQueryComponent($queryOrigin->getExpressionOwner($orders[$i]));
$tables[$i] = $cmp['table'];
$columns[$i] = $cmp['table']->getColumnName($fields[$i]);
// TODO: This sould be refactored as method called Doctrine_Table::getColumnAlias(<column name>).
$aliases[$i] = $columnAlias[$i] . '__' . $columns[$i];
}
}
// Ticket #1259: Fix for limit-subquery in MSSQL
$selectRegExp = 'SELECT\\s+';
$selectReplace = 'SELECT ';
if (preg_match('/^SELECT(\\s+)DISTINCT/i', $query)) {
$selectRegExp .= 'DISTINCT\\s+';
$selectReplace .= 'DISTINCT ';
}
$fields_string = substr($query, strlen($selectReplace), strpos($query, ' FROM ') - strlen($selectReplace));
$field_array = explode(',', $fields_string);
$field_array = array_shift($field_array);
$aux2 = preg_split('/ as /i', $field_array);
$aux2 = explode('.', end($aux2));
$key_field = trim(end($aux2));
$query = preg_replace('/^' . $selectRegExp . '/i', $selectReplace . 'TOP ' . ($count + $offset) . ' ', $query);
if ($isSubQuery === true) {
$query = 'SELECT TOP ' . $count . ' ' . $this->quoteIdentifier('inner_tbl') . '.' . $key_field . ' FROM (' . $query . ') AS ' . $this->quoteIdentifier('inner_tbl');
} else {
$query = 'SELECT * FROM (SELECT TOP ' . $count . ' * FROM (' . $query . ') AS ' . $this->quoteIdentifier('inner_tbl');
}
if ($orderby !== false) {
$query .= ' ORDER BY ';
for ($i = 0, $l = count($orders); $i < $l; $i++) {
if ($i > 0) {
// not first order clause
$query .= ', ';
}
$query .= $this->modifyOrderByColumn($tables[$i], $columns[$i], $this->quoteIdentifier('inner_tbl') . '.' . $this->quoteIdentifier($aliases[$i])) . ' ';
$query .= stripos($sorts[$i], 'asc') !== false ? 'DESC' : 'ASC';
}
}
//.........这里部分代码省略.........
示例3: getI18nAlias
/**
* Get I18n alias
*
* @param Doctrine_Query $q
* @return string I18n table alias
*/
public function getI18nAlias(Doctrine_Query $q)
{
return $q->getSqlTableAlias('Translation', $this->getComponentName());
}