从db加载的Symfony2实体属性

时间:2014-08-17 09:44:51

标签: symfony doctrine-orm entity

所以,我正在新闻门户网站上工作,我有两个实体:

  1. 新闻实体(id,title ... source)
  2. 源实体(id,title ...)
  3. 在新闻实体中,名为'来源'是Source Entity的id; 所以,我需要在发布新闻时访问Source Title。我知道那里的事情可以做很多事情关系ManyToOne。但我不想这样做,因为它在某些情况下让我的生活更加艰难。是否可以在实体中执行查询?喜欢:

    public function getSourceTitle()
    {
        $query = ...;
        return $query->getScalarResult();
    }
    

    我能做到吗?还是有另一种可能性?

1 个答案:

答案 0 :(得分:0)

查询insiide Entity类不是一个好习惯。实体类应该只包含字段,设置器和getter,没有别的。那么,如果你想查询数据库,你打算怎么做呢?注入EntityManager?好的,如果你真的想这样做,你可以这样做:

...

private $entityManager;

public function __construct(EntityManagerINterface $entityManager)
{
    $this->entityManager = $entityManager;
}

...

public function getSourceTitle()
{
    $sourceRepository = $this->entityManager->getRepository('VendorMyBundle:Source');
    $queryBuilder = $sourceRepository->createQueryBuilder('s')
        ->....

    return $queryBuilder->getScalarResult();
}

并在实体创建时将其用作new MyEntity($entityManager) ..但是,你应该知道这被认为是非常糟糕的做法......