我想使用带有一对多引用的Product和Price类。这是我的产品类。
/**
* @ApiResource
*
* @Document
*/
class Product
{
/**
* @ODMId(strategy="INCREMENT", type="integer")
*/
private $id;
/**
* @ODMField(type="string")
* @AssertNotBlank
*/
public $name;
/**
* @ODMReferenceMany(targetDocument=Price::class, mappedBy="product", cascade={"all"}, storeAs="id")
*/
public $prices ;
public function __construct()
{
$this->prices = new ArrayCollection();
}
//getter and setter of id...
}
这是价格等级
/**
* @ApiResource
*
* @ODMDocument
*/
class Price
{
/**
* @ODMId(strategy="INCREMENT", type="integer")
*/
private $id;
/**
* @ODMField(type="float")
* @AssertNotBlank
* @AssertRange(min=0, minMessage="The price must be superior to 0.")
* @AssertType(type="float")
*/
public $price;
/**
* @AssertType(type="integer")
*/
private $discount;
/**
* @ODMReferenceOne(targetDocument=Product::class, inversedBy="prices", storeAs="id")
*/
public $product;
我可以把id=1的价格放进去,但当我想把产品放在swagger ui中时,我会使用这个参考。
{
"name": "productno1",
"prices": [
"/api/prices/1/"
]
}
它给出201。我可以检查它存储的数据库。产品名称为productno1,但价格部分为空。有人能帮我解决问题吗?
我用invertedby更改了Product类中价格变量的mappedby标记,然后问题解决了。