我有一个Alert类,其中包含一些数据。然后我有了一个Availability类。在我的可用性课程中,我有
/**
* @var NickAlertBundleEntityAlert
*
* @ORMManyToOne(targetEntity="NickAlertBundleEntityAlert")
* @ORMJoinColumns({
* @ORMJoinColumn(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();
}
Doctrine将在加载Availability实体时将该实体作为代理加载(用于延迟加载)。
您可以通过普通的getter/property访问来访问这些,但它们通常会被Doctrine延迟加载。您可以通过DQL查询将它们联接,并且该属性将与已加载的所有链接实体一起水合,请参见使用联接提高性能。
然后,您可以将Twig中的这些关联实体作为任何其他属性进行访问。