本文整理汇总了PHP中Drupal\Core\Database\Query\SelectInterface::orderBy方法的典型用法代码示例。如果您正苦于以下问题:PHP SelectInterface::orderBy方法的具体用法?PHP SelectInterface::orderBy怎么用?PHP SelectInterface::orderBy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Drupal\Core\Database\Query\SelectInterface
的用法示例。
在下文中一共展示了SelectInterface::orderBy方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: addSort
/**
* Adds the sort to the build query.
*
* @return \Drupal\Core\Entity\Query\Sql\Query
* Returns the called object.
*/
protected function addSort()
{
if ($this->count) {
$this->sort = array();
}
// Gather the SQL field aliases first to make sure every field table
// necessary is added. This might change whether the query is simple or
// not. See below for more on simple queries.
$sort = array();
if ($this->sort) {
foreach ($this->sort as $key => $data) {
$sort[$key] = $this->getSqlField($data['field'], $data['langcode']);
}
}
$simple_query = $this->isSimpleQuery();
// If the query is set up for paging either via pager or by range or a
// count is requested, then the correct amount of rows returned is
// important. If the entity has a data table or multiple value fields are
// involved then each revision might appear in several rows and this needs
// a significantly more complex query.
if (!$simple_query) {
// First, GROUP BY revision id (if it has been added) and entity id.
// Now each group contains a single revision of an entity.
foreach ($this->sqlFields as $field) {
$group_by = "{$field['0']}.{$field['1']}";
$this->sqlGroupBy[$group_by] = $group_by;
}
}
// Now we know whether this is a simple query or not, actually do the
// sorting.
foreach ($sort as $key => $sql_alias) {
$direction = $this->sort[$key]['direction'];
if ($simple_query || isset($this->sqlGroupBy[$sql_alias])) {
// Simple queries, and the grouped columns of complicated queries
// can be ordered normally, without the aggregation function.
$this->sqlQuery->orderBy($sql_alias, $direction);
if (!isset($this->sqlFields[$sql_alias])) {
$this->sqlFields[$sql_alias] = explode('.', $sql_alias);
}
} else {
// Order based on the smallest element of each group if the
// direction is ascending, or on the largest element of each group
// if the direction is descending.
$function = $direction == 'ASC' ? 'min' : 'max';
$expression = "{$function}({$sql_alias})";
$expression_alias = $this->sqlQuery->addExpression($expression);
$this->sqlQuery->orderBy($expression_alias, $direction);
}
}
return $this;
}
示例2: orderBy
public function orderBy($field, $direction = 'ASC')
{
$this->query->orderBy($field, $direction);
return $this;
}