我正在尝试使用注释映射在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
但这种关系从未创造过,请问可能出现什么问题?
答案 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变量。