Ассоциация ManyToOne / OneToOne - PullRequest
       12

Ассоциация ManyToOne / OneToOne

0 голосов
/ 09 октября 2019

У меня есть объект Product, который содержит два поля urlTracking и urltrackingDoc типа Urltracking и объект Urltracking, который содержит продукт. Мне нужны отношения между Product и Urltracking, например OneToOne ManyToOne.

проблема в том, что когда я ищу urlTracking по id, я получаю продукт хорошо заполненным, но когда я ищу urlTrackingDoc по id, я получаю продукт null

/**
 *@ORM\Table(name="product")
 * @ORM\Entity(repositoryClass="App\ProductBundle\Repository\ProductRepository")
 */
class Product{


    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue()
     * @var int
     */
    private $id;


    /**
     * @var UrlTracking $urlTracking
     * @ORM\OneToOne(targetEntity="App\UrlTrackingBundle\Entity\UrlTracking", inversedBy="product")
     * @ORM\JoinColumn(name="url_tracking_id", referencedColumnName="id")
     */
    private $urlTracking;

    /**
     * @var UrlTracking $urlTrackingDoc
     * @ORM\OneToOne(targetEntity="App\UrlTrackingBundle\Entity\UrlTracking", inversedBy="product")
     * @ORM\JoinColumn(name="url_tracking_doc_id", referencedColumnName="id")
     */
    private $urlTrackingDoc;

    //...
}

/**
 *@ORM\Table(name="url_tracking")
 * @ORM\Entity(repositoryClass="App\UrlTrackingBundle\Repository\UrlTrackingRepository")
 */
class UrlTracking{


    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue()
     * @var int
     */
    private $id;

    /**
     * @var Product
     * @ORM\OneToOne(targetEntity="App\ProductBundle\Entity\Product", mappedBy="urlTracking")
     * @ORM\OneToOne(targetEntity="App\ProductBundle\Entity\Product", mappedBy="urlTrackingDoc")
     */
    private $product;
    //...
}

1 Ответ

3 голосов
/ 09 октября 2019

У вас должно быть 2 атрибута продукта в сущности UrlTracking, например $product и $productDoc, каждый из которых имеет собственное сопоставление доктрины.

...