php - 学说:与属性的 OneToMany 关系
问题描述
首先,感谢您的宝贵时间。
我正在用 Symfony5 开发一个网站,我正在使用 Doctrine2 来创建和管理数据库。但是,我一直在努力解决两个实体之间的关系。
该数据库包含 2 个重要的表:Shard 和 Wheel。
这些轮子用于在碎片上绘制图案,一个轮子可用于在多个碎片上绘制。相反,每个 Shard 只使用一个 Wheel。如果使用 OneToMany/ManyToOne 关系,这将相当容易,但问题是这种关系需要包含一个属性“ equal ”(如果图案是由这个确切的 Wheel 绘制的,则为布尔值,如果非常接近,则为 false,但不是确切的一个)。
我浏览了关于关系的学说文档章节,但我没有找到任何关于 OneToMany 与属性的关系(我看到了这一点,但据我了解,你不能添加属性)。
过了一会儿,我决定通过创建一个实体“ ShardWheel ”来“手动”完成它,所以我做了一些类似的事情:
分片实体
/**
* @ORM\Table(name="shard")
* @ORM\Entity(repositoryClass="App\Repository\ShardRepository")
*/
class Shard {
...
/**
* @var ShardWheel|null
*
* @ORM\OneToOne(targetEntity="App\Entity\ShardWheel", mappedBy="shard")
* @ORM\JoinColumn(nullable=true)
*/
private $shardWheel;
...
ShardWheel 实体
/**
* @ORM\Table(name="shard_wheel")
* @ORM\Entity(repositoryClass="App\Repository\ShardWheelRepository")
*/
class ShardWheel {
/**
* @var int
*
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var bool
*
* @ORM\Column(name="equal", type="boolean")
*/
private $equal;
/**
* @var Wheel
*
* @ORM\ManyToOne(targetEntity="App\Entity\Wheel", inversedBy="draw")
* @ORM\JoinColumn(nullable=false)
*/
private $wheel;
/**
* @var Shard
*
* @ORM\OneToOne(targetEntity="App\Entity\Shard", inversedBy="shardWheel")
* @ORM\JoinColumn(nullable=false)
*/
private $shard;
车轮实体
/**
* @ORM\Table(name="wheel")
* @ORM\Entity(repositoryClass="App\Repository\WheelRepository")
*/
class Wheel {
...
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="App\Entity\ShardWheel", mappedBy="wheel")
* // This just serve as an indicator, the constructor initializes the ArrayCollection
* @ORM\JoinColumn(nullable=true)
*/
private $draw;
...
问题是它似乎不起作用。我知道这不是一件常见的事情,所以没有很多关于这个的问题/答案。我尝试了很多组合,我迷路了。我可能很笨。有什么建议么 ?
PS:对不起,如果我有任何拼写错误和/或奇怪的句子,已经很晚了,我真的很累。
编辑:我制作了我想要的真正快速的 MCD:MCD
解决方案
推荐阅读
- vb.net - 单击按钮并计数 Vb.Net
- javascript - 检测到时单击图像/元素 (POPDOG COOKIE)
- xcode - SwiftUI CoreData 预览 FetchedResults 崩溃
- azure-devops - 远程计算机和不同用户上的 tf workspace /new
- javascript - 为 AWS Presign URL 设置 CORS 并为 S3 文件设置 cacheControl?
- office365 - 有没有办法在office365中使用API和C#创建共享邮箱?
- javascript - Google Apps 脚本 - 无法解析 JSON
- reactjs - React + Styled Components 表,其中包含嵌套行和每行组每列的平均值
- python - 使用 pandas read_xml 生成 Dataframe
- authentication - 在 Sveltekit 中使用 GoTrue 库在构建时会出现此错误:GoTrue is not a constructor