使用注释映射的Symfony中的ManyToOne关系不起作用



我正试图使用注释映射在symfony中创建一对多关系。一切似乎都很好,但约束不起作用。由于供应商是一个超级实体,我可以在产品表上插入数据,而无需在供应商的表上插入。这是我的尝试:

Product.php

/**
     * @ORMManyToOne(targetEntity="Supplier", inversedBy="products")
     * @ORMJoinColumn(name="$supplierId", referencedColumnName="$id")
     */
    private $supplier;
    /**
     * @var integer
     *
     * @ORMColumn(name="supplier_id", type="integer")
     */
    private $supplierId;

供应商.php

/**
     * @ORMOneToMany(targetEntity="Product", mappedBy="$supplier")
     */
    private $products;
    public function __construct()
    {
        $this->products = new ArrayCollection();
    }

添加以上内容后,我运行了以下命令

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

但这种关系从来没有建立过,请问有什么错?

这是因为您在名称和mapped中使用了php变量。通过从中删除$符号

@ORMJoinColumn(name="$supplierId", referencedColumnName="$id")

@ORMOneToMany(targetEntity="Product", mappedBy="$supplier")

应该是

Product.php

/**
 * @ORMManyToOne(targetEntity="Supplier", inversedBy="products")
 */
private $supplier;
/**
 * @var integer
 *
 * @ORMColumn(name="supplier_id", type="integer")
 */
private $supplierId;

Supplier.php

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

更多信息,你可以在这里找到

此外,如果您想避免问题,请将数组集合分配给products变量。

最新更新