我想加入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();
但它似乎无法正常工作。有什么想法吗?
答案 0 :(得分:0)
一种选择是创建一个父类来封装共享功能,并使用Doctrine的Inheritance Mapping为这四个类中的每一个创建一个子类。
/**
* @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');