我是Symfony的新手。我想创建一个博客网站。所以为此我创建了两个实体帖子和用户。我想我也正确地介绍了这两个实体,如下所述:
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;
...
}
我已成功使用其userid(创建帖子的用户)保存帖子。但我无法实现这一点。即获取用户创建的所有帖子。我试图像这样实现它:
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('AppBundle:User')->find($this->getUser()->getId());
dump($user->getPost());exit;
但我没有在变量中收到任何帖子。 (仅供参考:数据库中有用户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 vora
答案 0 :(得分:1)
我在这里得到了这个问题。以上所有代码都是正确的。我只是忘记调用一种方法来获取用户创建的所有帖子。
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('AppBundle:User')->find($this->getUser()->getId());
dump($user->getPost()->getValues());exit;
getValues()是从PersistentCollection类中提取数据的方法。
PS:Symfony的文档需要一个巨大的改进。 :(谢谢,
Parth vora