php - Symfony/Doctrine - createQueryBuilder orderBy

标签 php symfony doctrine-orm repository

我有一个“团队”实体,其属性为“预算”。我只想打印团队属性,我希望预算最高的团队出现在第一位、第二位、第三位...(DESC)。

但是使用这段代码,它不起作用,我不明白为什么。

indexAction( Controller )

    $em = $this->getDoctrine()->getManager();
    $teams = $em->getRepository('FootballBundle:Team')->getAllTeamsSortedByDescBudget();


    return $this->render('FootballBundle:Default:index.html.twig', array(
        'teams' => $teams,
    ));

团队资源库

public function getAllTeamsSortedByDescBudget()
{
    $q = $this->createQueryBuilder('a');
    $q->select()->from('FootballBundle:Team', 't')->orderBy('t.budget', 'DESC');

    return $q->getQuery()->getResult();
}

Twig View

<h1>Teams list</h1>
<ul>
    {% for team in teams  %}
        <li>{{ team.name }} - {{ team.championship }} - {{ team.budget|number_format(2, '.', ',') }}£</li>
    {% endfor  %}
    <br/>
</ul>

Team.php实体

/**
 * @var integer
 *
 * @ORM\Column(name="budget", type="integer")
 */
private $budget;

在这里,结果......

Teams list

Manchester City FC - Premier League - 100,000,000.00£
Arsenal FC - Premier League - 50,000,000.00£
Leicester City - Premier League - 20,000,000.00£
Crystal Palace FC - Premier League - 5,000,000.00£
Chelsea FC - Premier League - 100,000,000.00£

切尔西...哈哈

编辑:更正!查看接受评论。

最佳答案

getAllTeamsSortedByDescBudget 方法中的 QueryBuilder 查询更改为:

public function getAllTeamsSortedByDescBudget() 
{ 
    $qb = $this->createQueryBuilder('t')
        ->orderBy('t.budget', 'DESC');

    return $qb->getQuery()->getResult(); 
}

关于php - Symfony/Doctrine - createQueryBuilder orderBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35772873/

相关文章:

php - 简单的按 DESC 排序不起作用

php - Symfony + Doctrine - 定义完整性约束错误时的错误信息

session - 如何禁止 Symfony 将 _sess 文件写入我的/tmp 目录

php - symfony2 - assetic assetic :dump command doesn't create stylesheets correctly

database - 如何以编程方式更改 symfony2-doctrine 中的表前缀

php - 在PHP中移动上传的文件

php - 使用列标题对查询结果进行排序

php - Laravel Eloquent 创建于

php - Doctrine 2 实体中的常量

php - Symfony2 Doctrine,通过外键连接表