我有一个包含一些数据的警报类。然后我有一个可用性类。在我的可用性类中,我有
/**
* @var \Nick\AlertBundle\Entity\Alert
*
* @ORM\ManyToOne(targetEntity="Nick\AlertBundle\Entity\Alert")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="availability_alert_id", referencedColumnName="id")
* })
*/
private $availabilityAlert;
所以这是一个返回我的Alert类的外键,链接到我的Alerts类id。
我现在正在对可用性数据做一些工作,所以我有DQL查询
public function getAlertAvailability($id)
{
return $this->getEntityManager()
->createQuery(
'SELECT a.id, a.classLetter, a.flightNumber, a.alertPseudo, a.availability, a.lastUpdated
FROM NickAlertBundle:Availability a
WHERE a.availabilityAlert = :id
ORDER by a.classLetter, a.lastUpdated'
)
->setParameter('id', $id)
->getResult();
}
我称之为的方式就是这样
public function getAvailabilityData(){
$alerts = $this->em->getRepository('NickAlertBundle:Alert')->getActiveAlertIds();
if (!$alerts) {
echo "No Availability";
}
foreach($alerts as $alert){
$alertId = (int)$alert['id'];
$allAvailability = $this->em->getRepository('NickAlertBundle:Availability')->getAlertAvailability($alertId);
}
}
所以我基本上获取了所有活动的警报ID,然后通过它来获取这些单独警报的可用性。
现在我有几个问题。
首先,在我做的DQL查询中,我还需要从我的Alert表(一个名为command的字段)中获取一些内容。如何在此查询中加入以获取此数据?
其次,使用返回的数据,如何访问Twig文件中的availabilityAlert?
更新 尝试加入
public function getAlertAvailability()
{
return $this->getEntityManager()
->createQuery(
'SELECT a.id, a.classLetter, a.flightNumber, a.alertPseudo, a.availability, a.lastUpdated, u.searchCommand
FROM NickAlertBundle:Availability a
JOIN a.availabilityAlert u
ORDER BY a.classLetter, a.lastUpdated'
)
->getResult();
}
答案 0 :(得分:2)
当加载可用性实体时,Doctrine将加载该实体作为代理(用于延迟加载)。
您可以通过正常的getter / property访问来访问它们,但它们通常会被Doctrine延迟加载。您可以通过DQL查询加入它们,并且该属性将与已加载的所有链接实体保持一致,请参阅Improving Performance with a Join。
然后,您可以像在任何其他财产中一样访问Twig中的相关实体。