簡體   English   中英

多對一關系在使用注釋映射的 Symfony 中不起作用

[英]ManyToOne Relationship not working in Symfony using Annotations Mapping

我正在嘗試使用注釋映射在 symfony 中創建一對多關系。 一切似乎都很好,但約束不起作用。 我可以在產品表上插入數據,而無需在供應商的表上插入數據,因為供應商是一個超級實體。 這是我的嘗試:

產品.php

/**
     * @ORM\ManyToOne(targetEntity="Supplier", inversedBy="products")
     * @ORM\JoinColumn(name="$supplierId", referencedColumnName="$id")
     */
    private $supplier;
    /**
     * @var integer
     *
     * @ORM\Column(name="supplier_id", type="integer")
     */
    private $supplierId;

供應商.php

/**
     * @ORM\OneToMany(targetEntity="Product", mappedBy="$supplier")
     */
    private $products;

    public function __construct()
    {
        $this->products = new ArrayCollection();
    }

添加上述內容后,我運行了這個命令

php bin/console doctrine:schema:update --force

但這種關系從未建立,請問有什么問題?

這是因為您在名稱中使用了 php 變量,而 mappingBy 從中刪除了$符號

@ORM\JoinColumn(name="$supplierId", referencedColumnName="$id")

@ORM\OneToMany(targetEntity="Product", mappedBy="$supplier")

它應該是

產品.php

/**
 * @ORM\ManyToOne(targetEntity="Supplier", inversedBy="products")
 */
private $supplier;
/**
 * @var integer
 *
 * @ORM\Column(name="supplier_id", type="integer")
 */
private $supplierId;

供應商.php

/**
 * @ORM\OneToMany(targetEntity="Product", mappedBy="supplier")
 */
private $products;

您將在此處找到更多信息

此外,如果您想避免出現問題,請將數組集合分配給 products 變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM