1
다음과 같은 문제점이 있습니다. Symfony2를 사용하고 있습니다. 내 프로그램에서는 두 클래스, 즉 Users
과 Posts
을 사용합니다. 내 Post
엔티티에는 uploader(A User Object)
이라는 속성이 있습니다.Doctrine2 엔티티 문제
Post
을 새로 삽입하려고하면 문제가 발생합니다. 세션에 기록 된 것과 동일한 User
개체를 사용하여 새 Post
을 삽입하는 대신 새 User
개체를 데이터베이스에 삽입하고 해당 사용자 ID로 새 Post
개체를 설정합니다.
$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();
당신은 사용자가에서 가져 볼 수 있듯이이 데이터베이스에 새 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;
}
}
: 여기
코드의 일부 샘플입니다 세션. 이 코드가 새로운User
인스턴스를 만드는 이유는 무엇입니까?
당신이 관련 붙여 넣을 수 있습니다 거기에 캐스케이드 필요하지 않습니다 생각이
posts.php
추천하고
Users.php
뭔가를 사용해야합니다 'User' 클래스의 일부분도? – Squazic
세션 대신 데이터베이스에서 retrievevig 사용자를 시도 했습니까? 대부분의 EntityManager는 사용자 엔티티를 관리하지 않으므로 새로운 엔티티를 고려합니다. –