php - Symfony/Api Platform/Schema Generator:定义双向多对多关系
问题描述
我尝试了几个小时来理解Schema Generator Component中的关系,我阅读了文档,但我被关于字段基数、强制关系表名称mappedBy
和完整配置参考中的inversedBy
属性的糟糕细节困住了
我只是想生成两个具有ManyToMany
教义关系的实体。我的示例中的两个对象是Person
& Organization
。
Person::$memberOf
是组织的集合(可选)
Organization::$members
是具有至少一个人的人员的集合
我的config/schema.yaml
文件:
types:
Person:
properties:
memberOf:
cardinality: (0..*)
inversedBy: "members"
range: "Organization"
relationTableName: organization_person
Organization:
properties:
members:
cardinality: (1..*)
mappedBy: "memberOf"
range: "Person"
添加基数后(我尝试了很多组合......)你看到上面的命令不再为我生成默认ManyToOne
关系,但根本没有关系,而是一个带有 json 类型的 ORM 注释
人.php
/**
* @ApiProperty(iri="http://schema.org/memberOf")
* @ORM\Column(type="json", nullable=true)
* An Organization (or ProgramMembership) to which this Person or Organization belongs.
*
* @see http://schema.org/memberOf
*/
private ?Collection $memberOf = null;
组织.php
/**
* @ApiProperty(iri="http://schema.org/members")
* @ORM\Column(type="json", nullable=true)
* A member of this organization.
*
* @see http://schema.org/members
*/
private ?Collection $members = null;
我期待这样的事情:
Class Person {
/**
* @ApiProperty(iri="http://schema.org/memberOf")
* @ORM\ManyToMany(targetEntity="App\Entity\Organization", inversedBy="members")
* @JoinTable(name="organization_person")
*/
private ?Collection $memberOf = null;
// ...
}
Class Organization {
/**
* @ApiProperty(iri="http://schema.org/member")
* @ORM\ManyToMany(targetEntity="App\Entity\Person", mappedBy="memberOf")
*/
private ?Collection $members = null;
// ...
}
请有人告诉我我在这里做错了什么。
解决方案
推荐阅读
- ios - Swift:如何使用上一个和下一个按钮更改 UIImage?
- docker - Kubernetes 部署因 skaffold 失败
- javascript - 点击时对映射元素做出反应切换样式
- powershell - 我可以向标准 PowerShell 类型添加静态重载吗?
- azure - 尝试在登陆区设置中创建 Azure Databricks 群集时,Terraform 抛出错误
- javascript - 在 React 中动态加载和选择自定义项目对象
- pynput - 导入 pynput 时出错 - dlsym(0x7f90f7d0c310,PyObjCObject_New):找不到符号
- sql - 错误:格式错误的数组文字:“[{...}]” 详细信息:“[”必须引入明确指定的数组维度
- javascript - 读取 JSON 文件在节点中使用大量内存
- ios - 材质背景上的 SwiftUI contextMenu 在激活时会使内容变暗