ManyToOne / OneToOne协会

时间:2019-10-09 15:58:05

标签: symfony orm doctrine

我有一个实体产品,其中包含两个字段urlTracking和urltrackingDoc,类型分别为Urltracking和实体Urltracking,其中包含产品。 我需要在Product和Urltracking之间建立关系,例如OneToOne ManyToOne。

问题是,当我按id查找urlTracking时,我的产品就装满了,但是当我按id搜索urlTrackingDoc时,我得到的产品为空

/**
 *@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 个答案:

答案 0 :(得分:3)

您必须在UrlTracking实体中拥有2个产品属性,例如$product$productDoc,每个属性都有其自己的理论映射。