显示多种关系

时间:2016-02-22 14:05:05

标签: symfony doctrine-orm many-to-many

我有很多关系的问题。我有两个实体,广告系列(这是拥有方)和用户(扩展了FOSUserBundle)。

这是双向的ManyToMany关系,当我创建新广告系列时,我将一个条目添加到名为 users_campaigns 的表中。

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

我用这个覆盖了FOSUB twig模板:

{% 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: 以下是用户类的构造。

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

以下是该广告系列的吸气剂:

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

1 个答案:

答案 0 :(得分:0)

答案是如此愚蠢......

在我的代码中一次又一次地查看之后,我看到User类中的广告系列的注释在该行的开始处缺少@。

我写了

var emails = line1.Split('|', ',').Skip(1); //skipping ref

而不是

var splitted = line1.Split('|', ',');
var paramerers = 
       new 
       {
           name = splitted.FirstOrDefault(), //for case of empty line
           value = spliited.Skip(1)
       };

//usage
var emails = parameters.value.ToArray(); // f.e.

向所有人道歉,并感谢您试图帮助我。