次の問題があります。Symfony2 を使用しています。私のプログラムでは、 と の 2 つのクラスを使用Users
していPosts
ます。私のPost
エンティティには というプロパティがありますuploader(A User Object)
。
新しい を挿入しようとすると問題が発生しPost
ます。何らかの理由で、セッションにログインしたPost
のと同じオブジェクトを使用して新しいオブジェクトを挿入する代わりに、データベースに新しいオブジェクトを挿入し、その新しいオブジェクトにそのユーザー ID を設定します。User
User
Post
コードのサンプルを次に示します。
/**
* Posts
*
* @ORM\Table(name="posts")
* @ORM\Entity(repositoryClass="Main\ClientBundle\Entity\PostsRepository")
*/
class Posts {
/**
* @var \Users
*
* @ORM\ManyToOne(targetEntity="Users",cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="uploader", referencedColumnName="id")
* })
*/
private $uploader;
/**
* Set uploader
*
* @param \Main\ClientBundle\Entity\Users $uploader
* @return Posts
*/
public function setUploader(\Main\ClientBundle\Entity\Users $uploader = null)
{
$this->uploader = $uploader;
return $this;
}
}
Post
これはデータベースに new を挿入するコードです:
$post = new Posts();
$post->setType(0);
$post->setDate(new \DateTime());
$post->setTitle($postTitle);
$post->setSafeForWork($isSafe);
$session = $this->getRequest()->getSession();
$post->setUploader($session->get('user'));
$post->setImage($hashFileName);
$em = $this->getDoctrine()->getManager();
$em->persist($post);
$em->flush();
ご覧のとおり、ユーザーはセッションから取得されます。User
このコードが新しいインスタンスを作成するのはなぜですか?