执行以下代码会产生以下错误:
警告:为foreach()提供的参数无效
$stock = $offerDetail->getStock();
foreach($stock as $s)
{
...
}
返回的股票是 offerDetailRepository
类这是我在offerDetail中定义的关系:
/**
* @ORM\OneToMany(targetEntity="OfferDetailStock", mappedBy="offerDetail", cascade={"remove"})
*/
protected $stock;
并在OfferDetailStock中
/**
* @ORM\ManyToOne(targetEntity="Powershop\ApplicationBundle\Entity\OfferDetail", inversedBy="stock")
*/
protected $offerDetail;
我在OfferDetail中生成的一些函数:
public function getStock()
{
return $this->stock;
}
public function setStock($stock)
{
$this->stock = $stock;
}
public function addStock($stock)
{
$this->stock[] = $stock;
}
在OfferDetailStock中
public function getOfferDetail() {
return $this->offerDetail;
}
public function setOfferDetail($offerDetail) {
$this->offerDetail = $offerDetail;
}
有人有线索吗?据我所知,关系是正确定义的。 我不得不提到最初有一个与类库存的ManyToMany关系,我之后将OfferDetailStock作为一个表格。我确实清除了缓存并更新了方案。
感谢您的提前帮助
答案 0 :(得分:2)
在您的控制台中输入:
php app/console doctrine:generate:entities PowershopApplicationBundle:OfferDetail
它将生成缺少的构造函数:
public function __construct() { $this->stock = new \Doctrine\Common\Collections\ArrayCollection(); }
答案 1 :(得分:1)
在您的OfferDetail实体构造函数中添加:
public function __construct()
{
$this->stock = new \Doctrine\Common\Collections\ArrayCollection();
}
也许offerdetails没有股票,getStocks返回null。