我有两个表格: Users 和 Contacts
用户表 - id - 用户名
联系人表 - id - 用户id - 邮箱 (我简化了结构)
那么,如何正确设置Doctrine实体?
事情是这样的,我不确定实体关系是否设置正确。
用户表 - id - 用户名
联系人表 - id - 用户id - 邮箱 (我简化了结构)
那么,如何正确设置Doctrine实体?
/**
* @ORM\Entity
* @ORM\Table(name="users")
*/
class User extends BaseEntity {
/**
* @Id
* @GeneratedValue
* @Column(type="bigint")
*/
protected $id;
/**
* @ORM\Column(type="string", unique=true)
*/
protected $username;
/**
* @ORM\OneToOne(targetEntity="Contact")
* @ORM\JoinColumn(name="id", referencedColumnName="user_id", onDelete="CASCADE")
**/
protected $contact;
}
联系人实体:
/**
* @ORM\Entity
* @ORM\Table(name="contacts")
*/
class Contact extends BaseEntity {
/**
* @Id
* @GeneratedValue
* @Column(type="bigint")
*/
protected $id;
/**
* @var User
* @ORM\OneToOne(targetEntity="User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
/**
* @ORM\Column(type="string")
*/
protected $email;
}
事情是这样的,我不确定实体关系是否设置正确。
- 我不知道如何设置如果删除
User
则删除Contact
,但反过来不行。 - 如果我创建了
$user = new User()
,然后$contact = new Contact()
,如何连接它们?$user->contact = $contact
? 在persist()
和flush()
之后,它会正确地填充user_id
并将数据插入两个表中吗? - 我遇到了错误
A new entity was found through the relationship '...\User#contact' that was not configured to cascade persist operations for entity: ...\Contact@0000000015f3aa5e000000012cd799f5. To solve this issue: Either explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(..,cascade={"persist"}). If you cannot find out which entity causes the problem implement '...\Contact#__toString()' to get a clue.
我被卡住了,我认为这与我的问题 #1 有关,因此我无法测试 #2。
我已经浏览了几个小时的文档,但我被卡住了,我没有找到任何真正的示例可以引导我... 有人可以通过向我展示这些实体之间关系的适当配置来帮助我吗?
cascade={"persist", "remove"})
,当我执行$user = new User()
$contact = new Contact()
$user->contact = $contact
$entityManager->persist($user)
$entityManager->flush()
时,用户被创建了,但联系人没有被创建。我做错了什么? - simPodpersist($contact)
,它可以工作。我必须这样做吗?还是可以通过@ORM
注释来包含它? - simPodcascade={"persist", "remove"}
添加到您的User
实体的$contact
属性中,应该允许您向User
添加未持久化的联系人。您的User
实体中是否有其他映射可能会导致问题? - FuzzyTree