У меня есть класс Alert с некоторыми данными в нем. Тогда у меня есть класс доступности. В моем классе Наличия у меня естьSymfony2/Doctrine2 Получить данные из двух таблиц
/**
* @var \Nick\AlertBundle\Entity\Alert
*
* @ORM\ManyToOne(targetEntity="Nick\AlertBundle\Entity\Alert")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="availability_alert_id", referencedColumnName="id")
* })
*/
private $availabilityAlert;
Так это внешний ключ к моему оповещению класса, связанному с моим Оповещением идентификатора класса.
Я сейчас делаю некоторые работы по данным доступности, поэтому у меня есть 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);
}
}
Так что я в основном получить все мое активное Идентификаторы предупреждений, а затем передайте это, чтобы получить мою доступность для этих индивидуальных предупреждений.
Теперь у меня есть пара проблем.
Во-первых, в запросе DQL, который я делаю, мне нужно также получить что-то из моей таблицы предупреждений (поле, называемое командой). Как я могу присоединиться к этому запросу, чтобы получить эту часть данных?
Во-вторых, с данными, которые возвращаются, как мне получить доступ к доступности? В моем файле Twig?
UPDATE Попытка присоединиться
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();
}
Что я не понимаю, я использую левое соединение? И к чему я должен присоединиться? –
Вместо того, чтобы загружать идентификаторы оповещений, затем загружая объекты «Доступность», попробуйте добавить метод в репозиторий для «Доступности», который загружает объект с помощью 'Alert', уже подключенного с условиями, которые вам нужны (через DQL-метод, с которым я связан), тогда вы можете получать предупреждения от объекта через getter ('getAlerts' или что-то еще), как обычно. – AlpineCoder
Я обновил вопрос с жалкой попыткой, которую я сделал. Предполагается, что a - доступность, а u - для таблицы предупреждений. Я думаю, что мне нужно сделать, это присоединиться к доступности доступности. Добавить в поле «Оповещения», просто пытаясь понять, как –