0

执行下面的代码会出现以下错误:

警告:为 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;
}

有人有线索吗?据我所知,这些关系已正确定义。我不得不提一下,最初与 Stock 类存在 ManyToMany 关系,后来我将 OfferDetailStock 作为介于两者之间的表。我确实清除了缓存并更新了方案。

提前感谢您的帮助

4

2 回答 2

2

在您的控制台中输入:

php app/console doctrine:generate:entities PowershopApplicationBundle:OfferDetail

它将生成缺少的构造函数:

public function __construct()
{
    $this->stock = new \Doctrine\Common\Collections\ArrayCollection();
}
于 2013-02-01T01:00:10.870 回答
1

在您的 OfferDetail 实体构造函数中添加:

public function __construct()
{
    $this->stock = new \Doctrine\Common\Collections\ArrayCollection();
}

也许 offerdetails 没有股票,而 getStocks 返回 null。

于 2013-01-31T19:12:32.670 回答