Я пытаюсь сделать классическую систему комментариев-многоуровневых ответов:
Comment 1
Reply 1-1
Reply 1-2
Reply 1-3
Итак, я создал 2 объекта Комментарий а также Ответить определяется :
class Comment
{
[...]
/**
* @ORM\OneToMany(targetEntity="CommentBundle\Entity\Reply", mappedBy="comment")
*/
protected $replies;
[...]class Reply
{
[...]
/**
* @ORM\ManyToOne(targetEntity="CommentBundle\Entity\Comment", inversedBy="replies")
*/
protected $comment;
/**
* children replies
* @ORM\OneToMany(targetEntity="CommentBundle\Entity\Reply", mappedBy="reply")
*/
protected $replies;
/**
* parent reply
* @ORM\ManyToOne(targetEntity="CommentBundle\Entity\Reply", inversedBy="replies")
* @ORM\JoinColumn(name="reply_id", referencedColumnName="id", nullable=true)
*/
protected $reply;
[...]
И связанные запросы:
$qrycomment = "SELECT a, b, c FROM CommentBundle:Comment a LEFT JOIN a.replies b LEFT JOIN b.replies c ";
$qryreply = "SELECT a, b FROM CommentBundle:Reply a LEFT JOIN a.replies b";
Моя проблема :
СЛУЧАЙ 1 : выполнить qryreplies => 1 запрос выполнен => ОК
запрос 1: получить ответ1-1, ответ1-2 и ответ1-3
СЛУЧАЙ 2: выполнить qrycomment => выполнено несколько запросов => KO
запрос 1: получить комментарий 1-1, ответ 1-1
запрос 2: получить ответ1-2
запрос 3: получить ответ1-3
Замечания :
comment.twig:
{% for key,item in items %}
{{ item.description }}<br>
{% include "CommentBundle:Comment:Reply.twig" with {'items': item.getReplies } %}
{% endfor %}
Reply.twig
{% for key,item in items %}
Reply :
{{ item.description }}
{% include "CommentBundle:Comment:Reply.twig" with {'items': item.getReplies } %}
{% endfor %}
Я надеюсь, что мои объяснения достаточно ясны.
Спасибо за вашу помощь.
Задача ещё не решена.
Других решений пока нет …