【发布时间】:2015-05-20 20:33:23
【问题描述】:
问题:¿如何获取具有给定状态的所有应用程序?
假设:
- 应用程序的状态是它的最后一个事件。
- 事件具有递增的 ID。
活动:
<?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;
}
¿有没有办法获得具有给定“最后状态”的应用程序?
【问题讨论】:
标签: database symfony doctrine-orm many-to-many event-sourcing