【问题标题】:Symfony doctrine: ManyToOne relationship not workingSymfony 学说:ManyToOne 关系不起作用
【发布时间】:2016-09-06 10:11:03
【问题描述】:

我是 Symfony 的新手。我想创建一个博客网站。因此,为此我创建了两个实体帖子和用户。我想我也已经正确地关联了这两个实体,如下所述:

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

AppBundle/Entity/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/Entity/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;

但我没有在变量中收到任何帖子。 (仅供参考:数据库中有带有用户 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 进行用户管理。不知道这里是否有问题。

任何帮助将不胜感激。

谢谢,

帕斯沃拉

【问题讨论】:

  • 你是否重新生成了实体?
  • @MaxP。不,我没有。总之,问题已经解决了

标签: doctrine relationship symfony


【解决方案1】:

我在这里遇到了问题。以上所有代码都是正确的。我只是忘记调用一种方法来获取用户创建的所有帖子。

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

getValues() 是从 PersistentCollection 类中提取数据的方法。

PS:Symfony 的文档需要大幅改进。 :(

谢谢,

帕斯沃拉

【讨论】:

    猜你喜欢
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    相关资源
    最近更新 更多