如何在Doctrine2中通过另一个关系映射一个关系

时间:2013-10-03 18:27:09

标签: symfony doctrine-orm

我有三个实体StockStockDetailCatalogHasStock。在CatalogHasStock这是我的映射:

/**
 * @ORM\ManyToOne(targetEntity="StockBundle\Entity\StockDetail")
 * @ORM\JoinColumns(@ORM\JoinColumn(name="product", referencedColumnName="product"),
 *                  @ORM\JoinColumn(name="company", referencedColumnName="company"),
 *                  @ORM\JoinColumn(name="stock_detail", referencedColumnName="id"),
 *                  @ORM\JoinColumn(name="upc", referencedColumnName="upc"),
 *                  @ORM\JoinColumn(name="kcondition", referencedColumnName="kcondition"))
 */
protected $stock;

现在在StockDetail这是映射:

  /**
   * @ORM\ManyToOne(targetEntity="StockBundle\Entity\Stock", inversedBy="sdetails")
   * @ORM\JoinColumns(@ORM\JoinColumn(name="product", referencedColumnName="product"),
   *                  @ORM\JoinColumn(name="company", referencedColumnName="company"),
   *                  @ORM\JoinColumn(name="kcondition", referencedColumnName="kcondition"))
   */
  protected $stock;

我需要在CatalogHasStock中插入值,并且我这样做:

$catalog_has_stock = new CatalogHasStock ();
$catalog_has_stock->setStock($entityStockDetail);

但是我收到了这个错误:

  

注意:未定义的索引:产品在   /var/www/html/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php   第685行

映射部分有什么问题?

1 个答案:

答案 0 :(得分:1)

尝试使用以下语法:

* @ORM\JoinColumns({
* @ORM\JoinColumn(name="product", referencedColumnName="product"),
* @ORM\JoinColumn(name="company", referencedColumnName="company"),
* @ORM\JoinColumn(name="kcondition", referencedColumnName="kcondition")
* })

等。 好像你忘记了{}