我有2个Doctrine2实体:
class Product {
/**
* @ORM\OneToMany(targetEntity="ProductVendor", mappedBy="product")
*/
protected $productVendors;
//....
}
class ProductVendor {
/**
* @ORM\ManyToOne(targetEntity="Product", inversedBy="productVendors")
*/
protected $product;
//....
}
这些实体中的每一个都有标准的getter和setter,我为了简洁而遗漏了这些。我正在向ProductVendor添加一个新产品,如下所示:
$myProductVendor->setProduct($myProduct);
当我循环使用$ myProduct的ProductVendors时,新的ProductVendor不在那里。它仅包含该产品的现有ProductVendors。据我了解,该学说关系将负责将相关实体添加到关系的两个方面。我错过了什么?
答案 0 :(得分:1)
由于它是双向的,您需要更新双方的关联。
e.g。
$myProductVendor->setProduct($myProduct);
$product->addProductVendor($myProductVendor);
答案 1 :(得分:0)
为了更好的行为,请在级联的持久字段中添加:
public function addProductVendor(\Project\YourBundle\Entity\ProductVendor $productVendor)
{
$productVendor->setProduct($this);
$this->productVendors[] = $productVendor;
return $this;
}