2016-09-06 98 views
1

我是Symfony的新手。我想創建一個博客網站。所以爲此我創建了兩個實體發佈和用戶。我想我也既涉及正常的在這裏描述的實體:Symfony主義: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; 
... 
} 

我成功地能夠使用其用戶標識(創建帖子的用戶)保存帖子。但我無法做到與此相反。即獲取用戶創建的所有帖子。我試圖實現它是這樣的:

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

但我沒有得到任何職位的變量。 (僅供參考:數據庫中有用戶標識的帖子)。這裏是我得到上面:

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類中提取數據的方法。 PS:Symfony的文檔需要巨大的改進。 :(

感謝,

PARTH沃拉