2016-09-06 3 views
1

Symfony를 처음 사용합니다. 블로그 사이트를 만들고 싶습니다. 그래서 나는 두 개의 엔티티를 게시하고 사용자를 만들었습니다. 나는 또한 관련이 있다고 생각 모두 제대로 여기에 설명 된대로 개체 :Symfony doctrine : ManyToOne 관계가 작동하지 않습니다.

http://symfony.com/doc/current/doctrine/associations.html 

AppBundle/법인/Post.php :

... 
/** 
* Post 
* 
* @ORM\Table(name="post") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\PostRepository") 
*/ 
class Post 
{ /** 
    * @ORM\ManyToOne(targetEntity="User", inversedBy="post") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    */ 
    private $user; 
    .... 
} 

AppBundle/법인/User.php :

... 
/** 
* User 
* 
* @ORM\Table(name="user") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository") 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @ORM\OneToMany(targetEntity="Post", mappedBy="user") 
    */ 
    private $post; 
... 
} 

사용자 ID (게시물을 작성한 사용자)와 함께 게시물을 성공적으로 저장할 수 있습니다. 그러나 나는 이것의 반전을 성취 할 수 없다. 즉 사용자가 만든 모든 게시물을 가져옵니다. 나는 이것을 달성하려고 노력하고있다 :

$em = $this->getDoctrine()->getManager(); 
$user = $em->getRepository('AppBundle:User')->find($this->getUser()->getId()); 
dump($user->getPost());exit; 

그러나 나는 변수에 어떤 게시물도 얻지 못했다. (FYI : 데이터베이스에 사용자 ID가있는 게시물이 있음). 여기에 위의를 위해지고있어 무엇 :

PostController.php on line 163: 
PersistentCollection {#103 ▼ 
    -snapshot: [] 
    -owner: User {#76 ▶} 
    -association: array:15 [ …15] 
    -em: EntityManager {#374 …11} 
    -backRefFieldName: "user" 
    -typeClass: ClassMetadata {#80 …} 
    -isDirty: false 
    #collection: ArrayCollection {#102 ▼ 
    -elements: [] 
    } 
    #initialized: false 
} 

참고 :을 나는 사용자 관리를 위해 FosUserBundle을 사용하고 있습니다. 그것이 여기에 문제를 일으키고 있는지 확실하지 않습니다.

도움을 주시면 감사하겠습니다.

감사합니다,

Parth 유물

+0

당신에게 재생 된 기관이 있나요? –

+0

@MaxP을. 아니 내가하지 않았습니다. 어쨌든, 문제가 해결되었습니다 –

답변

1

나는 여기에 문제가있어. 위의 코드는 모두 정확합니다. 나는 한 가지 방법으로 사용자가 작성한 모든 게시물을 가져 오는 것을 잊고있었습니다.

$em = $this->getDoctrine()->getManager(); 
$user = $em->getRepository('AppBundle:User')->find($this->getUser()->getId()); 
dump($user->getPost()->getValues());exit; 

에 getValues ​​()는는 PersistentCollection 클래스에서 데이터를 추출하는 방법이다.

추신 : Symfony의 설명서는 크게 개선되어야합니다. :(

덕분에,

Parth 유물

관련 문제