임베디드 폼을 사용하고 있습니다. 필자의 경우, "CompetenceGroupe"객체는 "CompetenceItem"이라는 객체를 여러 개 가질 수 있지만 "CompetenceItem"객체는 하나의 "CompetenceGroupe"객체에만 속합니다. 따라서 관계는 manyToOne입니다.내 symfony 앱에서 임베디드 폼 관계 doctrine
양식이 완벽하게 작동하며 두 개의 표 (각 항목마다 하나씩)가 있으며 데이터베이스에 잘 저장되어 있습니다.
하지만 내 컨트롤러에서 doctrine을 사용하여 CompetenceGroupe 개체를 선택하면 해당 개체의 모든 정보가 있고 빈 "competenceItems"속성이있어 하위 개체 (CompetenceItem)를 검색 할 수 없습니다.
내 "CompetenceGroupe"엔티티 :namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="competences_groupes")
*/
class CompetenceGroupe
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id_competence_groupe;
/**
* @var User $user
*
* @ORM\ManyToOne(targetEntity="User", cascade={"persist", "merge"})
* @ORM\JoinColumn(name="id_user", referencedColumnName="id_user", nullable=false)
*/
private $user;
/**
* @ORM\Column(type="string", length=60, nullable=true)
*/
protected $titre;
protected $competence_items;
public function __construct()
{
$this->competence_items = new ArrayCollection();
}
public function getCompetenceItems()
{
return $this->competence_items;
}
/**
* Get idCompetenceGroupe
*
* @return integer
*/
public function getIdCompetenceGroupe()
{
return $this->id_competence_groupe;
}
/**
* Set titre
*
* @param string $titre
*
* @return CompetenceGroupe
*/
public function setTitre($titre)
{
$this->titre = $titre;
return $this;
}
/**
* Get titre
*
* @return string
*/
public function getTitre()
{
return $this->titre;
}
/**
* Set user
*
* @param \AppBundle\Entity\User $user
*
* @return CompetenceGroupe
*/
public function setUser(\AppBundle\Entity\User $user)
{
$this->user = $user;
return $this;
}
/**
* Get user
*
* @return \AppBundle\Entity\User
*/
public function getUser()
{
return $this->user;
}
public function addItem(CompetenceItem $item)
{
$this->competence_items->add($item);
}
public function removeItem(CompetenceItem $item)
{
// ...
}
/**
* Set competenceItems
*
* @param \AppBundle\Entity\CompetenceItem $competenceItems
*
* @return CompetenceGroupe
*/
public function setCompetenceItems(\AppBundle\Entity\CompetenceItem $competenceItems = null)
{
$this->competence_items = $competenceItems;
return $this;
}
}
그리고 내 "CompetenceItem"엔티티 :
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="competences_items")
*/
class CompetenceItem
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id_competence_item;
/**
* @ORM\Column(type="string", length=60, nullable=false)
*/
protected $libelle;
/**
* @var CompetenceNiveau $niveau
*
* @ORM\ManyToOne(targetEntity="CompetenceNiveau", cascade={"persist", "merge"})
* @ORM\JoinColumn(name="id_competence_niveau", referencedColumnName="id_competence_niveau", nullable=true)
*/
private $niveau;
/**
* @var CompetenceGroupe $competence_groupe
*
* @ORM\ManyToOne(targetEntity="CompetenceGroupe", cascade={"persist", "merge"})
* @ORM\JoinColumn(name="id_competence_groupe", referencedColumnName="id_competence_groupe", nullable=false)
*/
private $competence_groupe;
/**
* Get idCompetenceItem
*
* @return integer
*/
public function getIdCompetenceItem()
{
return $this->id_competence_item;
}
/**
* Set libelle
*
* @param string $libelle
*
* @return CompetenceItem
*/
public function setLibelle($libelle)
{
$this->libelle = $libelle;
return $this;
}
/**
* Get libelle
*
* @return string
*/
public function getLibelle()
{
return $this->libelle;
}
/**
* Set niveau
*
* @param \AppBundle\Entity\CompetenceNiveau $niveau
*
* @return CompetenceItem
*/
public function setNiveau(\AppBundle\Entity\CompetenceNiveau $niveau = null)
{
$this->niveau = $niveau;
return $this;
}
/**
* Get niveau
*
* @return \AppBundle\Entity\CompetenceNiveau
*/
public function getNiveau()
{
return $this->niveau;
}
/**
* Set competenceGroupe
*
* @param \AppBundle\Entity\CompetenceGroupe $competenceGroupe
*
* @return CompetenceItem
*/
public function setCompetenceGroupe(\AppBundle\Entity\CompetenceGroupe $competenceGroupe)
{
$this->competence_groupe = $competenceGroupe;
return $this;
}
/**
* Get competenceGroupe
*
* @return \AppBundle\Entity\CompetenceGroupe
*/
public function getCompetenceGroupe()
{
return $this->competence_groupe;
}
}
나는 내가 CompetenceGroupe 엔티티에서 "competence_items"재산의 누락 된 주석을 가지고 있다고 생각하지만, 나는 정말로 모르겠다. ...
당신의 도움에 감사드립니다!
자신의 관계를 정의하는 데 문제가 있습니다. 먼저 수정해야합니다. – ahmedbhs
동의합니다. 답변을 업데이트했습니다. 당신과 비슷하지만 원래의 질문은 CompetenceGroupe 엔티티의 ManyToOne이 아닌 OneToMany 관계를 설명했습니다. 이것은 당신이 묘사 한 양방향 관계가 필요하다는 것을 의미합니다. – ehymel