所以,我正在新闻门户网站上工作,我有两个实体:
在新闻实体中,名为'来源'是Source Entity的id; 所以,我需要在发布新闻时访问Source Title。我知道那里的事情可以做很多事情关系ManyToOne。但我不想这样做,因为它在某些情况下让我的生活更加艰难。是否可以在实体中执行查询?喜欢:
public function getSourceTitle()
{
$query = ...;
return $query->getScalarResult();
}
我能做到吗?还是有另一种可能性?
答案 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)
..但是,你应该知道这被认为是非常糟糕的做法......