Api-平台 ODM IRI 引用获取空对象
Api-Platform ODM IRI reference gets empty objects
我想将 Product 和 Price classes 与一对多引用一起使用。这是我的产品 class。
/**
* @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...
}
这是价格class
/**
* @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 放置和获取价格,但是当我想大摇大摆地放置产品时 ui 我使用此参考。
{
"name": "productno1",
"prices": [
"/api/prices/1/"
]
}
它给出了 201。我可以检查它存储的数据库。产品名称为 productno1,但价格部分为空。谁能帮忙解决问题?
我用 inversedby 更改了 Product class 中 prices 变量的 mappedby 标签,然后问题解决了。
我想将 Product 和 Price classes 与一对多引用一起使用。这是我的产品 class。
/**
* @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...
}
这是价格class
/**
* @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 放置和获取价格,但是当我想大摇大摆地放置产品时 ui 我使用此参考。
{
"name": "productno1",
"prices": [
"/api/prices/1/"
]
}
它给出了 201。我可以检查它存储的数据库。产品名称为 productno1,但价格部分为空。谁能帮忙解决问题?
我用 inversedby 更改了 Product class 中 prices 变量的 mappedby 标签,然后问题解决了。