首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >教条类表继承所有的孩子

教条类表继承所有的孩子
EN

Stack Overflow用户
提问于 2014-01-03 14:00:58
回答 1查看 2.7K关注 0票数 2

我想得到所有的文章,并得到文章的类型(鉴别器)。也许有另一种方法来组合所有的孩子(所有的记录固定和拍卖),并排序他们在创作日期?

条款实体:

代码语言:javascript
复制
/**
 * 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
{

拍卖实体

代码语言:javascript
复制
/**
 * Auction
 *
 * @ORM\Table("auction")
 * @ORM\Entity
 */
class Auction extends Article
{
...

固定实体

代码语言:javascript
复制
/**
 * Fixed
 *
 * @ORM\Table("fixed")
 * @ORM\Entity
 */
class Fixed extends Article
{
    ...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-03 18:24:25

1-为您的文章实体创建一个存储库,并添加一个返回所有文章的方法(当然,您可以使用Doctrine2、find、findAll .)提供的所有方法。为了在创建日期之前对您的实体进行排序,您必须在您的物品实体上拥有该属性(此属性将用于两个子实体,并且必须位于您的文章实体上,这是有意义的)

代码语言:javascript
复制
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();
       }
}

为了检查文章的类型,您可以这样做:

代码语言:javascript
复制
$entities = $em->getRepository('bundleName:Article')->getAll();

foreach(entities as $entity){

  if($entity instanceof Fixed){
    // do what you want
  }elseif($entity instanceof Auction){

  }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20905358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档