首页 > 解决方案 > Api-Platform ODM IRI 参考获取空对象

问题描述

我想使用具有一对多引用的 Product 和 Price 类。这是我的产品课。

    /**
     * @ApiResource
     *
     * @Document
     */
    class Product
    {

        /**
         * @ODM\Id(strategy="INCREMENT", type="integer")
         */
        private $id;

        /**
         * @ODM\Field(type="string")
         * @Assert\NotBlank
         */
        public $name;

        /**
         * @ODM\ReferenceMany(targetDocument=Price::class, mappedBy="product", cascade={"all"}, storeAs="id")
         */
        public $prices ;

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

        }
//getter and setter of id...
    }

这是价格等级

/**
 * @ApiResource
 *
 * @ODM\Document
 */
class Price
{

    /**
     * @ODM\Id(strategy="INCREMENT", type="integer")
     */
    private $id;


    /**
     * @ODM\Field(type="float")
     * @Assert\NotBlank
     * @Assert\Range(min=0, minMessage="The price must be superior to 0.")
     * @Assert\Type(type="float")
     */
    public $price;

    /**
     * @Assert\Type(type="integer")
     */
    private $discount;

    /**
     * @ODM\ReferenceOne(targetDocument=Product::class, inversedBy="prices", storeAs="id")
     */
    public $product;

我可以使用 id=1 放置和获取价格,但是当我想将产品放入 swagger ui 时,我使用此参考。

{
  "name": "productno1",
  "prices": [
    "/api/prices/1/"
  ]
}

它给出了 201。我可以检查它存储的数据库。产品名称为 productno1,但价格部分为空。任何人都可以帮助解决问题吗?

标签: mongodb-queryapi-platform.comdoctrine-odmdatabase-relations

解决方案


我用 inversedby 更改了 Product 类中价格变量的 mappedby 标签,然后问题解决了。


推荐阅读