0
Задача: ¿Как я могу получить все приложения с заданным статусом?Поиск событий в Doctrine - ManyToMany
Гипотеза:
- статуса приложения является его последним событие.
- События имеют инкрементные идентификаторы.
Событие:
<?php
namespace DnD\RaHApiBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints\DateTime;
/**
* Event
*
* @ORM\Table()
* @ORM\Entity
*/
class Event
{
public function __construct($name = null, $type = null) {
if (isset($name)) $this->name = $name;
if (isset($type)) $this->type = $type;
$this->eventDate = date_create(date("Y-m-d\TH:i:sO"));
}
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="type", type="string", length=255, nullable=true)
* @Groups({"application_info"})
*/
private $type;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
* @Groups({"application_info"})
*/
private $name;
/**
* @var date of event.
*
* @ORM\Column(name="event_date", type="datetime")
* @Groups({"application_info"})
*/
private $eventDate;
...
}
Применение:
<?php
namespace DnD\RaHApiBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints\DateTime;
/**
* Solicitud de registro.
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="DnD\RaHApiBundle\Repository\ApplicationRepository")
*/
class Application
{
public function __construct()
{
$pending = new Event("PENDING", "APPLICATION");
$this->status = new ArrayCollection($pending);
}
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @Groups({"application_info"})
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
* @Groups({"application_info"})
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="dni", type="string", length=255)
* @Groups({"application_info"})
*/
private $dni;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=255)
* @Groups({"application_info"})
*/
private $email;
/**
* @var string
*
* @ORM\ManyToMany(targetEntity="DnD\RaHApiBundle\Entity\Event", cascade={"persist"})
* @ORM\JoinTable(
* name="applications_events",
* joinColumns={@ORM\JoinColumn(name="application_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="event_id", referencedColumnName="id", unique=true)}
*)
* @Groups({"application_info"})
*/
private $status;
}
¿Есть ли способ, чтобы получить приложение с данным "последним статусом"?
Где этот статус LAST? – danielrvt
@ danielrvt Вы говорите * последний статус *, поэтому я предполагаю, что вы даете 'id'. В противном случае вы должны четко указать, что вы имеете в виду с * последним статусом *. Какая польза? Если дано какое-то другое свойство статуса, вы просто меняете предложение where на '-> где ('s.property =: value')'. – Wilt