Symfony REST API表单集合与多对多实体

3
我正在尝试使用隐藏实体创建一个具有多对多关系的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集合假定您正在将另一个对象与新属性(如姓名、电子邮件或电话号码)连接在一起,但在这种情况下,ID是唯一匹配的项目。
我如何配置集合表单类型以仅接受ID并在没有Web表单的情况下正常工作?
1个回答

1

一个普通的Symfony集合假定你正在将另一个对象与新属性(如名称、电子邮件或电话号码)连接在一起,但在这种情况下,ID是唯一匹配项。

实际上不是这样的。CollectionType字段可以与IntegerType配对,因此您将获得整数集合:

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

之后您可以应用验证,检查传递的是否是整数集合:

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

1
看,昨晚你帮了我很多,我只想再次感谢你。 - stack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接