У меня есть два пакета, один из них как основной, а другой как модуль, так что может быть или нет, в зависимости от конфигурации приложения.
Некоторые сущности из основного комплекта имеют отношение к моим модулям, например, у меня есть модуль резервирования, который имеет отношение один-ко-многим с продуктом. Товар из основного комплекта. Иногда мне нужно отключить модуль бронирования, но в этом случае связь с продуктом предупредит меня, что связь с бронированием не существует.
Чтобы решить эту проблему, я подготовил суперкласс с тем же именем, что и в модуле (резервирование), и этот объект имеет отношение только к моему продукту. Резервирование сущности из модуля просто расширяется этим суперклассом.
В базе данных все выглядит нормально, но только если я хочу использовать внутреннее соединение. Он просто возвращает, что не имеет ассоциации с именем serialNumber
namespace Test\MainBundle\Entity;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\MappedSuperclass;
use Doctrine\ORM\Mapping as ORM;
/** @MappedSuperclass */
class Reservation
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var Test\MainBundle\Entity\Product
*
* @ORM\ManyToOne(targetEntity="Test\MainBundle\Entity\Product")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="product_id", referencedColumnName="id")
* })
*/
private $products;
}
namespace Test\ReservationBundle\Entity;
use Test\MainBundle\Entity\Reservationas BaseReservation;
class Reservation extends BaseReservation
{
/**
* @ORM\OneToMany(targetEntity="Test\ReservationBundle\Entity\SerialNumber", mappedBy="documentSerialNumber", cascade={"all"})
*
*/
private $serialNumber;
}
Когда я строю запрос по приведенному ниже коду, у меня нет доступа к отношению serialNumber
$query = $this->doctrine->getRepository('TestMainBundle:Product')->createQueryBuilder('product');
Но еслиЯ создаю запрос по приведенному ниже коду, я могу получить доступ к продукту и серийному номеру.
$query = $this->doctrine->getRepository('TestReservationBundle:Reservation')->createQueryBuilder('reservation');