我有很多关系的问题。我有两个实体,广告系列(这是拥有方)和用户(扩展了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;
}
答案 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.
向所有人道歉,并感谢您试图帮助我。