この問題で子猫を傷つけたくなるので、これに対する答えを知っている人に前もって感謝します。
Symfony2 では、Doctrine エンティティを以下のように設定しています。
namespace Product\ProductCoreBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Cache\ArrayCache;
use Doctrine\Common\Persistence\PersistentObject;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="item")
* @ORM\Entity(repositoryClass="Product\ProductCoreBundle\Repositories\ProductRepository")
*/
class Product extends PersistentObject
{
/**
*
* @var ArrayCollection
* @ORM\OneToMany(targetEntity="Product\ProductCoreBundle\Entity\ItemPrice", mappedBy="product", fetch="EAGER")
*/
protected $prices;
public function __construct() {
$this->prices = new ArrayCollection();
}
}
これは、問題のある項目のみを含めるように非常に削減されています。$prices は、対象となるすべてのロケール (GBP、EUR など...) にわたるこのアイテムに関連付けられたすべての価格の配列である必要があり、ItemPrice エンティティは次のように設定されます。
namespace Product\ProductCoreBundle\Entity;
use Doctrine\Common\Persistence\PersistentObject;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="itemprice")
* @ORM\Entity(repositoryClass="Product\ProductCoreBundle\Repositories\ItemPriceRepository")
*/
class ItemPrice extends PersistentObject
{
/**
* The Product that this price is for.
* @var Product
* @ORM\ManyToOne(targetEntity="Product", inversedBy="prices")
* @ORM\JoinColumn(name="item_code", referencedColumnName="item_code")
*/
protected $product;
}
次に、次のことを行います。
$pr = $this->getDoctrine()->getRepository('MPProductProductCoreBundle:Product');
$product = $pr->findByPublicId({some_id});
しかし、商品と 1 つの価格エントリしか返されません。Symfony デバッグ コンソールを見て、実行されたクエリを取得し、データベースに対して実行すると、2 つの異なるロケールに対して 2 つの価格が返されます。
私は今、これを修正することに本当に行き詰まっています。私が間違っていることについて何か手がかりを得た人はいますか?