Doctrine即时减去两列作为第三列

时间:2017-10-26 10:31:21

标签: symfony doctrine-orm

在MySQL中表达,我希望:

SELECT article.sellprice - article.cost AS margin
FROM article

我在DQL中的尝试(注意我的实体中不存在margin):

SELECT a, a.sellprice - a.cost AS a.margin
FROM ArticleBundle:Article a"

异常[Syntax Error] line 0, col 47: Error: Expected Doctrine\ORM\Query\Lexer::T_FROM, got '.'中的结果。尝试将其置于实体之外:

SELECT a, a.sellprice - a.cost AS margin
FROM ArticleBundle:Article a"

该代码的一些变体;这会弄乱我的结果,导致树枝错误Key "nom" for array with keys "0, margin" does not exist.。实际上,a.nom存在;当恢复到:

SELECT a
FROM ArticleBundle:Article a

完全没有错误。有任何线索可以得到我计算出的实时结果吗?

1 个答案:

答案 0 :(得分:1)

因为根据Yoshi的评论,这个值必须冒泡到树枝上(非常感谢顺便说一句),我最后进行了第二次尝试:

SELECT a, a.sellprice - a.cost AS margin
FROM ArticleBundle:Article a"

调整树枝以解析混合内容:

{% for mixed_content in pagination %}
    <tr>
    {% set article = mixed_content|first %}
    {% set margin = mixed_content.margin %}
        <td>{{ article.nom }}</td>
        <td>{{ article.margin}}</td>

希望这可以帮助任何人。