-1

我想加入 4 个实体,每个实体都有 upload_datetime 列。然后我想按日期时间列降序排列它们,只得到 7 条记录。

现在我有这个:

return $this->getEntityManager()
            ->createQuery('SELECT a,v,p,q FROM SelfInspirationDomainBundle:Articles a, SelfInspirationDomainBundle:Videos v, SelfInspirationDomainBundle:Pictures p,SelfInspirationDomainBundle:Quotes q ORDER BY a.uploadDatetime DESC, v.uploadDatetime DESC, p.uploadDatetime DESC, q.uploadDatetime DESC')
            ->setMaxResults($limit)
            ->getResult();

但它似乎无法正常工作。有任何想法吗?

4

1 回答 1

0

一种选择是创建一个父类来封装共享功能并使用 Doctrine 的继承映射为这四个类中的每一个创建一个子类。

/**
 * @Entity
 * @InheritanceType("SINGLE_TABLE")
 * @DiscriminatorColumn(name="discr", type="string")
 * @DiscriminatorMap({"article" = "Artice", "video" = "Video", ...})
 */
class Asset
{
    /**
     * @ORM\Column(name="upload_datetime", type="datetime")
     */
    protected $upload_datetime;
}

/**
 * @ORM\Entity
 */
class Article extends Asset {
...
}

然后您可以执行如下查询:

$this->getEntityManager()
        ->createQuery('SELECT a FROM Bundle:Asset a ORDER by a.update_datetime');
于 2013-04-29T06:03:57.803 回答