提前感谢任何知道答案的人,因为这个问题让我想伤害小猫。
在 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});
但我只取回产品和一个价格条目。当我查看 Symfony 调试控制台并获取已执行的查询并针对数据库执行它时,我得到了 2 个不同语言环境的 2 个价格,就像我应该做的那样。
我现在真的坚持要解决这个问题。有人知道我做错了什么吗?