2013-08-05 18 views
5

Tôi thực sự mệt mỏi khi tìm ra cách tôi có thể kiểm tra trong Doctrine 2 nếu bản ghi thực thể liên quan tồn tại trong DB. Làm ơn giúp tôi với.Doctrine2 Kiểm tra xem thực thể liên quan có tồn tại

Ví dụ: tôi có hai thực thể. Một là trạng thái đơn đặt hàng của một công ty giao hàng nhất định. Một thứ khác là thứ tự.

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; 

thứ tự thực thể đôi khi không có tư cách và tôi cần phải kiểm tra xem nó có.

AFAIK nếu tôi sẽ cố gắng sử dụng is_null($order->getDpdOrderStatus()) nó sẽ luôn luôn được false vì thuyết luôn tạo Proxy đối tượng cho các tổ chức của nó nếu chế độ EAGER không được xác định.

Vì vậy, cách thích hợp nhất để kiểm tra xem thực thể trạng thái của tôi có tồn tại trong cơ sở dữ liệu không?

+0

Bạn đã thử điều đó chưa? Proxy của Doctrine sẽ tải dữ liệu bị thiếu. – meze

+0

Xin lỗi, đó là lỗi của tôi. Tôi có nghĩa là sai tất nhiên. –

Trả lời

0

này đã làm việc cho tôi.

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