在研究一个API Platform的关系映射的时候,发现多对一不可用,一对多可用。在研究2天,询问了chatGPT后,突然发现一个只使用新PHP8注释风格,不工作。一个是混合2种的。
混合的多对一风格的,能运行
/**
* @var \Product
*
* @ORM\ManyToOne(targetEntity="Product")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="product_id", referencedColumnName="id")
* })
*/
#[Groups(['productImage:read'])]
#[ORM\ManyToOne(targetEntity: Product::class, inversedBy: 'productImages')]
#[ORM\JoinColumn(name: 'product_id', referencedColumnName: 'id')]
public ?Product $product;
只有PHP8注释的,不行
#[Groups(['product:read'])]
#[ORM\OneToMany(mappedBy: 'product', targetEntity: ProductImage::class, cascade: ['persist'])]
后来改为混写的就可以了。
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="ProductImage", mappedBy="product")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="id", referencedColumnName="product_id")
* })
*/
#[Groups(['product:read'])]
#[ORM\OneToMany(mappedBy: 'product', targetEntity: ProductImage::class, cascade: ['persist'])]