Symfony如何获取未读邮件的数量

问题描述 投票:0回答:1

我正在寻找对话

$conversations = $r->searchConv()
        ->where('c.sender = :user OR c.recipient = :user')
        ->groupBy('c.conversationId')
        ->setParameter('user', $this->getUser())
        ->getQuery()
        ->getResult()
    ;

我正在寻找未读消息的对话

$unread = $r->searchConv()
        ->where('u.recipient = :user AND u.readAt is NULL')
        ->setParameter('user', $user)
        ->getQuery()
    ;

Twig:

    {% for c in conv %}
        <div class="card card-body mt-1">
            {{ c.name }}
            {% if unread != null %}
                </span> New Message !</span>
            {% endif %}
        </div>
    {% endfor %}

实体Messages

  • 名称
  • 发送者
  • 收件人
  • 内容
  • sendAt
  • readAt

问题是我的树枝循环将始终显示“新消息”。

如何仅通过对话显示?

Symfony 5

symfony
1个回答
0
投票

您当前正在返回Query对象,而不是该查询的结果,因此永远不会返回null

如果添加->getResult(),您将获得实际结果,就像对$conversations所做的一样。

然后您的树枝模板看起来更像

    {% for c in unread %}
        <div class="card card-body mt-1">
            {{ c.name }}
            <span> New Message !</span>
        </div>
    {% endfor %}

并且仅列出带有未读消息的对话。

[如果您只想向一般的对话列表添加信息,我认为您根本不需要其他查询,因为您已经有了消息实体,因此可以编写]]

            {% if ! c.readAt %}
                <span> New Message !</span>
            {% endif %}
© www.soinside.com 2019 - 2024. All rights reserved.