ManyToOne关系无法使用注释映射在Symfony中工作

时间:2016-03-31 09:48:31

标签: php symfony

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

Product.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;

supplier.php

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

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

添加上述内容后,我运行了此命令

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

但这种关系从未创造过,请问可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

这是因为您在名称中使用了php变量,而且从

中删除了$符号
@ORM\JoinColumn(name="$supplierId", referencedColumnName="$id")

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

应该是

<强> Product.php

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

<强> Supplier.php

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

您会找到更多信息here

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