2013-08-05 12 views
5

Jestem bardzo zmęczony, aby dowiedzieć się, w jaki sposób mogę sprawdzić w Doctrine 2, czy rekord jednostki powiązanej istnieje w DB. Pomóż mi proszę.Doctrine2 Sprawdź, czy istnieje powiązana jednostka.

Na przykład mam dwie jednostki. Jednym z nich jest status zamówienia określonej firmy kurierskiej. Kolejny to porządek.

Order.php

/** 
* @ORM\OneToOne(targetEntity="Application\DeliveryBundle\Entity\DpdOrderStatus", mappedBy="order") 
* @var DpdOrderStatus 
*/ 
$dpdOrderStatus; 

DpdOrderStatus.php

/** 
* @ORM\Id 
* @ORM\OneToOne(targetEntity="\Application\FrontendBundle\Entity\Order", inversedBy="dpdOrderStatus") 
* @ORM\JoinColumn(onDelete="CASCADE") 
* @var Order 
*/ 
$order; 

jednostka Zamówienie czasami nie mają statusu i muszę sprawdzić czy posiada ono.

AFAIK jeśli będę próbować używać is_null($order->getDpdOrderStatus()) zawsze będzie false ponieważ doktryna zawsze tworzyć Proxy przedmiotów dla swoich jednostek, jeśli tryb EAGER nie jest określona.

Jaki jest najbardziej właściwy sposób sprawdzenia, czy mój status istnieje w bazie danych?

+0

Czy próbowałeś tego? Doctrine's proxy załaduje brakujące dane. – meze

+0

Przepraszam, to mój błąd. Mam na myśli oczywiście fałsz. –

Odpowiedz

0

Ten pracował dla mnie.

public function hasOrderStatus() { 
    return !is_null($this->dpdOrderStatus) && (bool) $this->dpdOrderStatus->getId(); 
}