null * 在应用程序中,我有一个订单编辑页面,它发送了一个转换为DTO的请求。
class OrderData
{
/**
* @var string|null
*/
protected $date;
/**
* @var array|OrderItemData[]
*/
protected $orderItemsData;
(...)
}
订单项目数据。
class OrderItemData
{
/**
* @var int|null
*/
protected $id;
/**
* @var float|null
*/
protected $price;
/**
* @var int|null
*/
protected $quantity;
(...)
}
订单实体有映射。
class Order
{
/**
* @var Collection|OrderItem[]
*
* @ORM\OneToMany(targetEntity="OrderItem", mappedBy="order", cascade={"persist", "remove"})
*/
protected $orderItems;
(...)
}
更新的最佳解决方案是什么?$order->orderItems
荟萃 OrderItemData
? 更糟糕的是,订单编辑允许对订单项目列表进行三种修改。
作为一个变通方法,我曾经清除订单中的所有订单项目,然后迭代OrderItemData数组并创建新的项目,但是这个方法是变通的,现在是时候做一些更好的事情了,我在互联网上找到了很多网页,鼓励使用DTO类作为Symfony Form数据类,但是我没有找到解决集合更新问题的方法。
我在网上找到很多网页,鼓励使用DTO类,甚至作为Symfony Form数据类,但我没有找到解决更新集合问题的方法。谁能给我一些建议?
如果你建立REST API,你必须创建这样的动作(现在担心嵌套的集合)。
POST /order/orderItem to add
PUT /order/orderItem/{id} to update
DELETE /order/orderItem/{id} to delete