我有一个看起来像
的实体 .
.
.
/**
* @ORM\ManyToMany(targetEntity="PrLeadBundle\Entity\Stock")
* @ORM\JoinColumn(name="stock_id", referencedColumnName="id", nullable=true)
*/
private $stock;
public function __construct()
{
$this->stock = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add stock
*
* @param \PrLeadBundle\Entity\Stock $stock
* @return ValueList
*/
public function addStock(\PrLeadBundle\Entity\Stock $stock)
{
$this->stock[] = $stock;
return $this;
}
/**
* Remove stock
*
* @param \PrLeadBundle\Entity\Stock $stock
*/
public function removeStock(\PrLeadBundle\Entity\Stock $stock)
{
$this->stock->removeElement($stock);
}
/**
* Get stock
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getStock()
{
return $this->stock;
}
现在,如果我尝试访问theese值,我会收到Join Column错误。
我正在使用:
$Values = $entityManager->getRepository('PrLeadBundle:ValueList')->findBy(array('disabled' => '0','exportable'=>'1'), array('title' => 'ASC'));
foreach ($Values as $item){
var_dump($item->getStock()->getId());
}
这对我来说有点混乱,因为我碰到了:
在课堂上尝试调用方法“getId” “学说\ ORM \ PersistentCollection”。 500内部服务器错误 - UndefinedMethodException
我在过去的某些时间做过这个问题,我也可以使用{{item.stock.id}}来查看树枝中的股票价值......
我做错了什么?
答案 0 :(得分:1)
因为$stock
变量是Doctrine\Common\Collections\ArrayCollection
,
因此,在提取元素之前,您应该尝试使用$item->getStock()->getId()
或$item->getStock()->first()->getId());
之类的内容来代替var_dump($item->getStock()
。