【问题标题】:ManyToMany doctrine relation with FOSUserBundle与 FOSUserBundle 的多对多原则关系
【发布时间】:2014-05-18 15:26:16
【问题描述】:

我想与两个实体建立多对多关系:

  • 用户(与 FOSUserBundle 一起使用)
  • 类别

目前,我正在“MyNamespace/Userbundle/Entity/User.php”中执行此操作:

/**
 * @ORM\ManyToMany(targetEntity="\MyNamespace\WebsiteBundle\Entity\Categorie", inversedBy="users")
 * @ORM\JoinTable(name="user_has_categories")
 */
private $categories;

public function __construct()
{
    parent::__construct();
    $this->categories = new \Doctrine\Common\Collections\ArrayCollection();
}

这在“MyNameSpace/WebsiteBundle/Entity/Categorie.php”中:

/**
 * @ORM\ManyToMany(targetEntity="\MyNameSpace\UserBundle\Entity\User", mappedBy="categories")
 */
 private $users;

 public function __construct()
 {
   $this->users = new \Doctrine\Common\Collections\ArrayCollection();
 }

当我运行学说命令创建具有关系的表时,一切正常。

但是当我在我的默认控制器中执行var_dump($this->getUser()); 时(例如),我有一个无限循环,导致我的浏览器崩溃。 当我删除我的用户实体中的关系时,此效果不再出现...

那会知道这个问题可能出在哪里?

我在 ubuntu 上使用 php 5.4.9

谢谢:)

【问题讨论】:

    标签: php symfony orm doctrine-orm doctrine


    【解决方案1】:

    使用

    Doctrine\Common\Util\Debug::dump()

    而不是var_dump

    -更新-

    为什么 Debug::dump() 有效但 var_dump 无效:

    Doctrine\Common\Util\Debug::dump() 接受第二个参数 ma​​xDepth,默认值 = 2,将嵌套引用限制为两级。你可以随意传递这个值。

    【讨论】:

    • 谢谢你的回复,这工作,我没有无限循环!但为什么它适用于 Doctrine\Common\Util\Debug::dump() 而不是经典的 var_dump() ?
    • var_dump 是原生 php 函数,由于存在为多对多关系创建的循环引用,var_dump 无法处理,而 Doctrine\Common\Util\Debug:dump( ) 用于处理这种情况
    猜你喜欢
    • 2015-04-05
    • 2022-01-22
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多