我想得到所有的文章,并得到文章的类型(鉴别器)。也许有另一种方法来组合所有的孩子(所有的记录固定和拍卖),并排序他们在创作日期?
条款实体:
/**
* Article
*
* @ORM\Table("articles")
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="article_type", type="string")
* @ORM\DiscriminatorMap({"auction" = "Auction", "fixed" = "Fixed", "tba" = "TBA"})
*/
class Article
{拍卖实体
/**
* Auction
*
* @ORM\Table("auction")
* @ORM\Entity
*/
class Auction extends Article
{
...固定实体
/**
* Fixed
*
* @ORM\Table("fixed")
* @ORM\Entity
*/
class Fixed extends Article
{
...发布于 2014-01-03 18:24:25
1-为您的文章实体创建一个存储库,并添加一个返回所有文章的方法(当然,您可以使用Doctrine2、find、findAll .)提供的所有方法。为了在创建日期之前对您的实体进行排序,您必须在您的物品实体上拥有该属性(此属性将用于两个子实体,并且必须位于您的文章实体上,这是有意义的)
class Article {
/**
* @var \DateTime
*
* @ORM\Column(name="created_at", type="datetime")
*
*/
protected $createdAt
}
class ArticleRepository extends EntityRepository{
public function getAll() {
try {
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select('a')
->from('bundleName:Article', 'a');
$qb->orderBy('a.createdAt', 'DESC');
return $qb->getQuery()->getResult();
} catch (\Doctrine\ORM\NoResultException $e) {
return array();
} catch (\Exception $e) {
return array();
}
}为了检查文章的类型,您可以这样做:
$entities = $em->getRepository('bundleName:Article')->getAll();
foreach(entities as $entity){
if($entity instanceof Fixed){
// do what you want
}elseif($entity instanceof Auction){
}
}https://stackoverflow.com/questions/20905358
复制相似问题