对于具有多个属性的实体,我有一个表格显示这些属性之一,它是一个集合。
我使用EasyAdmin拥有此表单,我可以从集合中添加和删除项目,问题是我无法删除所有项目,因此更改不会保存或即使只剩下一项,如果删除,它未保存。
我在删除报价时遇到的错误是,当尝试删除所有未在数据库上删除的报价时,似乎空POST的整个正文都没有在数据库上执行任何操作,因为如果您将报价[自行车]表单中的所有属性(如果您将其删除)。
因此,我要采取的解决方案是将一个额外的字段添加为隐藏字段,以便在不加任何折扣的情况下发送帖子时,它不会为空。
实体自行车:
class Bike{
// More properties
/**
* @ORM\OneToMany(targetEntity="App\Entity\Bike\Offer", mappedBy="bike", orphanRemoval=true, cascade={"persist"})
*/
private $priceOffers;
public function __construct()
{
$this->priceOffers = new ArrayCollection();
}
// Adding, removing items and getter methods
}
实体报价:
class Offer{
// More properties
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Bike", inversedBy="priceOffers")
*/
private $bike;
// getter and setter methods
}
EasyAdmin中的实体:
bike_offers:
class: App\Entity\Bike
role: ROLE_MANAGER
form:
fields:
- property: 'priceOffers'
type: 'collection'
css_class: 'offers-collection'
type_options:
entry_type: App\Form\Bike\OfferType
by_reference: false
label: false