我尝试了几个小时来理解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;
// ...
}
请有人告诉我我在这里做错了什么。