У меня есть база данных, это выглядит так:
Entity: Post, Comment. Комментарий имеет внешний ключ post_id.
Мне нужно получить комментарии, которые принадлежат конкретному сообщению по его идентификатору. И сортировать его методом getCreated ().
Проблема в том, когда я пытаюсь найти все комментарии по post_id, например:
$comments = $this->get('doctrine')->getRepository('BlogCommonBundle:Comment')->findBypost_id($postID);
usort($comments, function($a, $b){
return ($a->getCreated() < $b->getCreated());
});
Я получаю ..CommonBundle\Entity\Comment' has no field 'postId'.
Вероятно, потому что его внешний ключ.
Есть ли способ, как это сделать?
Большое спасибо!
Кажется, у вас есть такая ассоциация:
/**
* @ORM\ManyToOne(targetEntity="Post")
*/
protected $post;
Так что вы должны найти свои комментарии post
не post_id
:
$comments = $this->get('doctrine')->getRepository('BlogCommonBundle:Comment')->findBy(['post' => $postID]);
И вы также можете отсортировать его, просто добавив ['created' => 'DESC']
в качестве второго параметра:
$comments = $this->get('doctrine')->getRepository('BlogCommonBundle:Comment')->findBy(['post' => $postID], ['created' => 'DESC']);
Других решений пока нет …