我正在寻找对话
$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
问题是我的树枝循环将始终显示“新消息”。
如何仅通过对话显示?
Symfony 5
您当前正在返回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 %}