2017-01-25 2 views
1

Ich habe zwei Entitäten:Lehre: seltsames Verhalten in Update mit Symfony

/** 
* @ORM\Entity 
* @ORM\Table(name="A") 
*/ 
class A { 
    /** 
    * @ORM\Column(type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\OneToMany(targetEntity="B", mappedBy="a") 
    */ 
    protected $bs; 
} 

/** 
* @ORM\Entity 
* @ORM\Table(name="B") 
*/ 
class B { 
    /** 
    * @ORM\Column(type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    /** 
    protected $id; 

    * @ORM\ManyToOne(targetEntity="A", inversedBy="bs") 
    * @ORM\JoinColumn(name="id_a", referencedColumnName="id") 
    * @ORM\JoinColumn(onDelete="CASCADE") 
    */ 
    protected $a; 

} 

Auf meinem db, Tabelle B-Taste (id, ID_A). On bearbeiten Methode, erhalte ich B durch id_b und ID_A und ich führen bündig auf EntityManager:

$em = $this->getDoctrine()->getEntityManager(); 
    $b = $em->getRepository('B')->find(array('id' => $id_b,'a' => $id_a)); 

    $form = $this->createFormBuilder($b) 
     ->add(...) 
     ->getForm(); 

    $form->handleRequest($request); 

    if ($form->isValid()) { 
     $em->flush(); 
     ... 

Veränderungen auf allen B Reihen mit id_b angewendet werden und ID_A werden nicht berücksichtigt.

Jede Hilfe würde geschätzt, Dank im Voraus

Antwort

0

Zunächst einmal ein Fehler mit Ihrem Repository-Methode erhalten sollte. Sie verwenden die Methode oder die Unterschrift des Methode zu finden ist:

public function find($id); 

Sie scheint für die findBy Funktion zu suchen:

public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null); 

Beachten Sie, dass diese Funktion eine Sammlung zurück und kein einziges Objekt

+0

Nun nein. $ ID kann tatsächlich ein Array sein. Ungewöhnlich, aber es funktioniert. Überlegen Sie, ob Sie versuchen, die eigentliche Frage zu beantworten. Was ehrlich gesagt ein bisschen zusammenhangslos zu mir scheint. Viel Glück. – Cerad