学说没有正确保湿实体(ids是字符串而不是整数)

时间:2014-07-01 11:21:34

标签: orm doctrine-orm

我正在尝试将旧数据库映射到一些新实体。两个实体WishlistProduct具有多对多关系,因此有一个数据透视表必须映射为实体WishlistProduct,并且两边都有多对一关联。

关系如下:

┌──────────┐  M:1  ┌─────────────────┐  1:M  ┌─────────┐
│ Wishlist │───────│ WishlistProduct │───────│ Product │
└──────────┘       └─────────────────┘       └─────────┘

然而,Doctrine使用id列的字符串保持Product::$id,并且所有其他字段都是NULL。

1 个答案:

答案 0 :(得分:1)

出现此问题是因为虽然Wishlist::$wishlistProducts属性已正确分配Doctrine\Common\Collections\ArrayCollection的新实例,但Product::$wishlistProducts尚未执行相同操作,因此如果该值为NULL,则实体不能正确补水。

每当你创建自己的psuedo多对多关系时,请确保两个实体都有:

use Doctrine\Common\Collections\ArrayCollection;

class EntityOnOneSideOfRelationship
{
    private $pivotEntity;

    public function __construct()
    {
        $this->pivotEntity = new ArrayCollection();
    }
}