gpt4 book ai didi

php - 具有多对多实体的 Symfony REST API 表单集合

转载 作者:搜寻专家 更新时间:2023-10-31 21:25:53 24 4
gpt4 key购买 nike

我正在尝试使用隐藏实体制作具有多对多关系的 Symfony 表单。用this gist ,我的表单将普通 ID 连接到实体对象,并且对于我正在构建的 REST API 来说效果很好。问题是当嵌入的实体只有一个 ID 时,如何创建一个表单来接收和连接多个实体。

例如,

Employee
$id - primary key int
$name
$companies - many-to-many relationship

Company
$id - primary key int
$name
$employees - inverse many-to-many relationship

现在我想接收包含此内容的 POST 请求

name = "Employee 1"
companies[] = 1
companies[] = 2

您可以看到公司表单仅包含映射到现有公司的整数。正常Symfony collection假定您要将另一个对象与新属性(如姓名、电子邮件或电话号码)结合在一起,但在这种情况下,ID 是唯一匹配的项目。

如何将收集表单类型配置为只接受一个 ID,并且在没有 Web 表单的情况下仍然工作?

最佳答案

A normal Symfony collection assumes that you're joining another object together with new properties, like name, email or phone number, but in this case the ID is the only item to match.

其实不然。 CollectionType字段可以与 IntegerType 配对所以你会得到一个整数集合:

->add('companies', CollectionType::class, [
'entry_type' => IntegerType::class,
'allow_add' => true,
])

之后您可以应用验证来检查通过的是否是整数集合:

/**
* @Assert\All(
* @Assert\Type(type="integer")
* )
* @var integer[]
*/
public $companies;

关于php - 具有多对多实体的 Symfony REST API 表单集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36269811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com