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 に答える