我正在尝试将旧数据库映射到一些新实体。两个实体Wishlist
和Product
具有多对多关系,因此有一个数据透视表必须映射为实体WishlistProduct
,并且两边都有多对一关联。
关系如下:
┌──────────┐ M:1 ┌─────────────────┐ 1:M ┌─────────┐
│ Wishlist │───────│ WishlistProduct │───────│ Product │
└──────────┘ └─────────────────┘ └─────────┘
然而,Doctrine使用id列的字符串保持Product::$id
,并且所有其他字段都是NULL。
答案 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();
}
}