php - symfony 中的教义协会
问题描述
所以我已经和 Symfony 合作了一段时间,但有一件事让我很烦恼。这是关于教义协会的。问题是我正在尝试实现用户朋友邀请和关系,并且有一个页面,用户可以看到他发送的邀请以及待处理的邀请。
编辑:我使用多对一/一对多关联实现了它。但是我的问题是——教义协会是正确的做法吗?
我的用户实体
class User implements UserInterface
{
private $id;
/**
* @ORM\Column(name="first_name", type="string", length=30)
*
* @Assert\NotBlank(message="First name cannot be a blank field", groups={"register"})
* @Assert\Length(min="3", max="30", groups={"register"})
*/
/**
* @ORM\Column(type="string", length=50)
*
* @Assert\NotBlank(message="Username cannot be a blank field", groups={"register"})
* @Assert\Length(min="7", max="50", groups={"register"})
*/
private $username;
/**
* @ORM\Column(type="string", length=255)
*
* @Assert\Length(min="7", max="50", groups={"register"})
*/
private $password;
/**
* @ORM\OneToMany(targetEntity="App\Entity\UserInvitation", mappedBy="inviterId", orphanRemoval=true)
*/
private $userInvitations;
/**
* @ORM\OneToMany(targetEntity="App\Entity\UserInvitation", mappedBy="invitedId", orphanRemoval=true)
*/
private $pendingUserInvitations;
//getters and setters
我的 UserInvitation 实体
class UserInvitation
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="userInvitations")
* @ORM\JoinColumn(name="inviter_id", nullable=false)
*/
private $inviterId;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="pendingUserInvitations")
* @ORM\JoinColumn(name="invited_id", nullable=false)
*/
private $invitedId;
/**
* @ORM\Column(type="boolean")
*/
private $status;
这是我的数据库。
解决方案
关系是正确的方法,尽管在实体上我会使用以下内容:
class UserInvitation
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="userInvitations")
* @ORM\JoinColumn(name="inviter_id", nullable=false)
*/
private $inviter;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="pendingUserInvitations")
* @ORM\JoinColumn(name="invited_id", nullable=false)
*/
private $invitee;
/**
* @ORM\Column(type="boolean")
*/
private $status;
然后你会 getInviter() 或 setInviter()。基本上认为您将相关对象保存到实体而不是相关字段
推荐阅读
- javascript - Highcharts loop JSON Object to fill data series
- c# - 在 C# 中对 DataTable 调用 SQL 系统函数
- outlook - Outlook API 返回 10 个联系人
- javascript - Javascript按钮单击在selenium webdriver中不起作用
- javascript - Error when using "import" statement in Javascript
- php - Sengrid getenv() functon inside queue (Laravel)
- javascript - Javascript nested array keep only specific keys
- r - 重新排序 R 中的列
- javascript - 如何垂直打印数组中的字符串元素?
- python - Backup a tree of folders, but print each file individually