一个了困扰了我两天的问题原来仅仅是注释风格

在研究一个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'])]