(Symfony 4和Doctrine)添加一个实体字段以存储聚合函数结果

时间:2019-01-05 07:08:15

标签: entity aggregate dql

我有一个DQL查询,它遍历所有帖子,显示他们的评论等...:

public function getAllPosts(User $user){
    $qb = $this->createQueryBuilder('p');
    $qb->select('p, postPhotos,postVideos, comments')
        ->leftJoin('p.photos', 'postPhotos')
        ->leftJoin('p.videos', 'postVideos')
        ->leftJoin('p.comments', 'comments')'

等...

然后,我必须遍历帖子并执行汇总功能以计算每个帖子的评论数。

因此,为了做到这一点,Doctrine要求您在Comment实体内声明一个字段,我将其称为numComments,然后编写我的存储库函数以在CommentRepository.php中设置其值:

类注释 {

/**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 */
private $id;

/**
 * @var integer
 *
 * @ORM\Column(name="numComments", type="integer")
 */
private $numComments;

将这个numComments字段放入注释类后,Doctrine错误地认为该字段是我原始帖子查询的一部分(在顶部),并给我一个错误,“找不到列:1054未知列' c3_.numComments”在“字段列表”中

我是否必须添加新的迁移并将“ numComments”列添加到实际的Comment数据库表中?

为什么教义会如此困难,迫使您以这种方式做事?

0 个答案:

没有答案