2016-10-18 21 views
0

私はSymfonyで自分自身を訓練しており、双方向アソシエーション(非常に基本的)に関する問題を抱えています。ダンピング私のエンティティを나뭇ークテンプレートに入れます。常にnullです。Symfony OneToMany - ManyToOneエンティティアソシエーションが動作しない

私の問題はthis oneのようですが、解決策は共有されていません。

私は文書hereを読みました。正しい手順に従っているようです。

私のDBはテーブルを含んでおり、によって関連子供表は、外部キーとして両方のテーブルををchildren.parent_idはpopolatedと私は教義を使用している:GENERATE:ENTITIESとDoctrine:GENERATE:CRUDを。 >ドクトリン - - >エンティティマッピング

/** 
    * @var \AppBundle\Entity\Parents 
    * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Parents", inversedBy="children") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="parent_id", referencedColumnName="parent_id") 
    * }) 
    */ 
    private $parent_id; 
    /** 
    * Set parent_id 
    * @param \AppBundle\Entity\Parents $parent_id 
    * @return Parents 
    */ 
    public function setParentID(\AppBundle\Entity\Parents $parent_id= null) { 
     $this->parent_id = $parent_id; 
     return $this; 
    } 
    /** 
    * Get parent_id 
    * @return \AppBundle\Entity\Parents 
    */ 
    public function getParentID() { 
     return $this->parent_id; 
    } 

として(両親一覧ページの)Simfonyプロファイラを見て追加情報:

function __construct() { 
    $this->lastUpd = new \DateTime(); 
    $this->children = new ArrayCollection(); 
} 
/* 
    * @ORM\OneToMany(targetEntity="AppBundle\Entity\Children", mappedBy="parent_id", cascade={"persist"})  
    */ 
    private $children; 
    public function setChildren(ArrayCollection $children) { 
     return $this->children = $children; 
    } 
    public function getChildren() { 
     return $this->children; 
    } 

子供クラスでI持っている:私が持っている親クラスで

AppBundle \ Entity \ ParentsとAppBundle \ Entity \ Type(単方向のOneToMany連動)が見つかりました(エラーなし)。

私は非常に基本的なエラーを投稿して申し訳ありません。私は解決策は簡単だと思っていますが、私はそれを見ることができません。

答えて

0

注:子供のArrayCollectionを作成せずに追加したと仮定しています。

addChildメソッド(あなたが呼び出す必要があります)がありません。

ArrayCollectionでこれは簡単です。

public function addChild(Children $child) { 
    $this->children->add($child); 

} 

また、removeChildとすることもできます。

public function removeChild(Children $child) { 
    $this->children->removeElement($child); 
} 

コントローラに搭載されている場合。

$child = new Children(); 
$parent->addChild($child); 

親オブジェクトを永続化すると、カスケードが持続するため、子オブジェクトが続きます。私もcascade={"remove"}を追加するので、親を削除すると、子どもたちは移動します。

+0

あなたが私に示唆するものは有用であり、私はそれに取り組んでいますが、私が期待していることは、親エンティティに関連する子エンティティのリストが既に_filled_あることです。子エンティティをリストするページから、正しく関連する親エンティティを_dumpできます。私が新しいChildernを追加するとき、私は_default_ Parentを形成し、それはデータベースに正しく_persisted_します。だからまだ何かが欠けている。 – AlexMI

関連する問題