我问了一个问题,但现在意识到这可能与我的设计有关。所以,我有一个警报,每个警报可以有一个或多个AlertFlightNumbers。所以我的Alert实体就像这样
**
* Alert
*
* @ORM\Table(name="alert")
* @ORM\Entity(repositoryClass="Nick\AlertBundle\Repository\AlertRepository")
*
*/
class Alert
{
//all the usual stuff
/**
* @ORM\OneToMany(targetEntity="Nick\AlertBundle\Entity\AlertFlightNumbers", mappedBy="availabilityAlert")
*/
private $flightNumbers;
/**
* @return ArrayCollection
*/
public function getFlightNumbers()
{
return $this->flightNumbers;
}
/**
* @param AlertFlightNumbers $flightNumber
* @return AvailabilityAlert
*/
public function addFlightNumber(AlertFlightNumbers $flightNumber)
{
if (!$this->flightNumbers->contains($flightNumber)) {
$this->flightNumbers->add($flightNumber);
}
return $this;
}
}
所以我在我的警报实体中有航班号码集。然后在我的AlertFlightNumbers实体中,我有
/**
* AlertFlightNumbers
*
* @ORM\Table(name="alert_flight_numbers", uniqueConstraints={@ORM\UniqueConstraint(name="alert_id", columns={"alert_id", "flight_number"})}, indexes={@ORM\Index(name="IDX_4D3E3675D28831F9", columns={"availability_alert_id"})})
* @ORM\Entity
*/
class AvailabilityAlertFlightNumbers
{
/**
* @ORM\ManyToOne(targetEntity="Nick\AlertBundle\Entity\Alert", inversedBy="flightNumbers")
* @ORM\JoinColumn(name="availability_alert_id", referencedColumnName="id")
*/
private $availabilityAlert;
/**
* Get flightNumber
*
* @return string
*/
public function getFlightNumber()
{
return $this->flightNumber;
}
}
因此,从我所看到的,这是链接这些类型的事物的标准方式,以便警报可以有一个或多个FlightNumbers。
我的问题是这个。我有一个监听器绑定到我所做的警报实体
public function postPersist(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
if ($entity instanceof Alert) {
$this->alert = $entity;
}
}
基本上,这会让我获得持久化的警报实体对象。使用该对象,如果我这样做
\学说\共同\的Util \调试::转储($ alert-> getFlightNumbers());
我最终得到了
object(stdClass)[398]
public '__CLASS__' => string 'Nick\AlertBundle\Entity\AlertFlightNumbers' (length=55)
public 'id' => int 69
public 'flightNumber' => string 'VS7' (length=3)
public 'availabilityAlert' =>
object(stdClass)[414]
public '__CLASS__' => string 'Nick\AlertBundle\Entity\Alert' (length=42)
public 'id' => int 65
public 'searchCommand' => string 'A20APRLONLAX' (length=12)
public 'isConnecting' => string 'no' (length=2)
public 'lastUpdated' => string 'DateTime' (length=8)
public 'isDeleted' => int 0
public 'alertStatus' => string 'Active' (length=6)
public 'bookingClass' => string 'Array(1)' (length=8)
public 'pseudo' => string 'Array(1)' (length=8)
public 'flightNumbers' => string 'Array(1)' (length=8)
当我调用方法getFlightNumbers时,这不是我真正期望的。真的,我希望使用来自AlertFlightNumbers的getFlightNumber函数,这样我只返回VS7而不是所有其他数据。
所以主要问题是如何才能访问警报航班号?附:我不知道为什么它将字段列为公共字段,因为它们不应该是,如果我尝试访问它们,我会收到私人警告。
由于