Я пытаюсь отобразить все связанные свойства моей сущности присоединения в ветке.
Вот мои 3 сущности:
/**
* @ORM\Entity(repositoryClass="App\Repository\JointureRepository")
*/
class Jointure
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Skill", mappedBy="jointure")
*/
private $skills;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Answer", mappedBy="jointure")
*/
private $answers;
public function __construct()
{
$this->skills = new ArrayCollection();
$this->answers = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
/**
* @return Collection|Skill[]
*/
public function getSkills(): Collection
{
return $this->skills;
}
public function addSkill(Skill $skill): self
{
if (!$this->skills->contains($skill)) {
$this->skills[] = $skill;
$skill->setJointure($this);
}
return $this;
}
public function removeSkill(Skill $skill): self
{
if ($this->skills->contains($skill)) {
$this->skills->removeElement($skill);
// set the owning side to null (unless already changed)
if ($skill->getJointure() === $this) {
$skill->setJointure(null);
}
}
return $this;
}
/**
* @return Collection|Answer[]
*/
public function getAnswers(): Collection
{
return $this->answers;
}
public function addAnswer(Answer $answer): self
{
if (!$this->answers->contains($answer)) {
$this->answers[] = $answer;
$answer->setJointure($this);
}
return $this;
}
public function removeAnswer(Answer $answer): self
{
if ($this->answers->contains($answer)) {
$this->answers->removeElement($answer);
// set the owning side to null (unless already changed)
if ($answer->getJointure() === $this) {
$answer->setJointure(null);
}
}
return $this;
}
}
Сущность умения с ManyToOne => Отношение присоединения:
/**
* @ORM\Entity(repositoryClass="App\Repository\SkillRepository")
*/
class Skill
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $label;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Jointure", inversedBy="skills")
* @ORM\JoinColumn(nullable=false)
*/
private $jointure;
public function getId(): ?int
{
return $this->id;
}
public function getLabel(): ?string
{
return $this->label;
}
public function setLabel(string $label): self
{
$this->label = $label;
return $this;
}
public function getJointure(): ?Jointure
{
return $this->jointure;
}
public function setJointure(?Jointure $jointure): self
{
$this->jointure = $jointure;
return $this;
}
}
Моя сущность Ответ тот же, что и у Навыка со свойством UserEmail.
Итак, в моем контроллере:
class HomeController extends AbstractController
{
/**
* @var JointureRepository
*/
public function __construct(JointureRepository $repository, ObjectManager $em)
{
$this->repository = $repository;
$this->em = $em;
}
/**
* @Route("/", name="home")
*/
public function index()
{
$JointureRepository = $this->getDoctrine()->getRepository(Jointure::class);
$jointure = $JointureRepository->findAll();
foreach($jointure as $jointures){
$skills = $jointures->getSkills();
$answers = $jointures->getAnswers();
}
$this->em->flush();
return $this->render('pages/home.html.twig', [
'controller_name' => 'HomeController',
'jointure' => $jointure,
'skills' => $skills,
'answers' => $answers,
]);
}
}
Когда я пытаюсь отобразить их в ветке:
{% for jointures in jointure.skills %}
{{jointures.label}}
{% endfor %}
У меня следующая ошибка: Ключа «навыков» для массива с ключами «0, 1» не существует. В строке: {% для соединений в соединении.навыки%}
Если я сделаю:
{% for skill in skills %}
{{skill.id}}
{% endfor %}
3,4 появляется, но не 1,2, связанные с Jointure с id = 0 .. Не могли бы вы помочь мне, пожалуйста?