【发布时间】:2015-02-15 05:26:40
【问题描述】:
我有用户和帖子。一对多
//user.php
/**
* @ORM\OneToMany(targetEntity="Post", mappedBy="posts")
*/
private $posts;
public function __construct () {
$this->posts = new ArrayCollection();
}
post.php
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="posts")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $posts;
控制器
$post->setPosts($this->getUser());
$em->persist($post);
$em->flush();
我必须使用 setPosts 来持久化相关用户吗?我可以用级联或类似的东西保存吗?
我知道
Doctrine 中有两种级联:
1) ORM 级别
2) 数据库级
但是我不明白什么时候用cascade={"persist"})
我的问题是:
- 如何保存帖子对象中的用户相关信息?
- 何时以及为何使用
cascade={"persist"})?
更新
我试过了
//用户
/**
* @ORM\OneToMany(targetEntity="Post", mappedBy="posts",cascade={"persist"})
*/
private $posts;
控制器
$user = $this->getUser();
$user->addPost($post);
$em->persist($user);
$em->flush();
但不起作用,数据库中的字段user_id为空
【问题讨论】:
-
我看到了,但我不明白我的方式是否正确(
$post->setPosts($this->getUser());)。我正在尝试使用级联,但不起作用 -
您的示例代码中没有级联持久化。你有没有尝试过?
-
@OIS 我更新了我的问题。在我的情况下,拥有方是用户?谢谢