显示多对多关系

Display manytomany relationship

我对多对多关系有疑问。我有两个实体,活动(拥有方)和用户(扩展 FOSUserBundle)。

这是一个双向多对多关系,当我创建一个新的活动时,我将一个条目添加到名为 users_campaigns 的 table。

我的问题是,在用户的个人资料页面上,我想显示与他相关的所有活动。

我用这个覆盖了 FOSUB 树枝模板:

{% trans_default_domain 'FOSUserBundle' %}

<div class="panel panel-default">

<div class="panel-heading">
    {{ 'profile.show.username'|trans }}
</div>
<div class="panel-body">
    {{ user.username }}
</div>

<div class="panel-heading">
    {{ 'profile.show.email'|trans }}
</div>
<div class="panel-body">
    {{ user.email }}
</div>

<div class="panel-heading">
    {{ 'profile.show.lastlogin'|trans }}
</div>
<div class="panel-body">
    {{ user.lastlogin|date('Y-m-d H:i:s') }}
</div>

<div class="panel-heading">
    {{ 'profile.show.campaigns'|trans }}
</div>
<div class="panel-body">
    {% if user.campaigns is defined %}
        {%  for campaign in user.campaigns %}
            {{ campaign.name }}
        {% endfor %}
    {% endif %}
</div>

我还覆盖了 ProfileController,并在那里尝试了一些东西,但我没有设法显示活动。

有人知道吗?

编辑:关系:

/**
 * @ORM\ManyToMany(targetEntity="User", inversedBy="campaigns" , cascade={"all"})
 * @ORM\JoinTable(name="users_campaigns")
 */
private $players;

和:

    /**
 * ORM\ManyToMany(targetEntity="Campaign", mappedBy="players", cascade={"all"})
 */
protected $campaigns;

编辑 2: 这是用户 class.

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

这里是活动的 getter:

    /**
 * @return ArrayCollection
 */
public function getCampaigns()
{
    return $this->campaigns;
}

答案太蠢了...

在反复查看我的代码后,我发现用户 class 中的活动注释在该行的开头缺少 @。

我写了

ORM\ManyToMany(targetEntity="Campaign", mappedBy="players", cascade={"all"})

而不是

@ORM\ManyToMany(targetEntity="Campaign", mappedBy="players", cascade={"all"})

向大家致歉,感谢大家的帮助。