2016-08-03 18 views
0

Ich habe ein Elternobjekt, was ein Konto ist. Dieses Kontoobjekt hat eine Eins-zu-viele-Beziehung mit seinem untergeordneten Objekt, was eine Mailliste ist.Wie Kind-Objekt von Eltern mit einer zu viele Beziehung in Symfony2

Parent: 

    class CusAccount 
    { 

     public function __construct() 
     { 
      $this->mailList = new ArrayCollection(); 
     } 

     /** 
     * @ORM\OneToMany(targetEntity="MailList", mappedBy="account") 
     */ 
     private $mailList; 

     /** 
     * Get mailList 
     * 
     * @return \Doctrine\Common\Collections\Collection 
     */ 
     public function getMailList() 
     { 
       return $this->mailList; 
     } 

    } 

Child: 

class MailList 
{ 

    /** 
    * @ORM\ManyToOne(targetEntity="CusAccount") 
    * @ORM\JoinColumn(name="account_id", referencedColumnName="id") 
    */ 
    private $account; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="email", type="string", length=50) 
    * 
    */ 
    private $email; 

} 

Hinzufügen mehrerer Childs zum übergeordneten funktioniert gut. Ich überprüfe die Datenbank. das erste Kind auch zurückzubekommen arbeitet mit:

$child = $account->getMailinglist()->first(); 

Nur jetzt will ich ein Kind durch seine E-Mail-Adresse ein finden. Ich kann den richtigen Code dafür nicht finden?

Antwort

0

Sie können die Sammlung auswählen, zu finden, was Sie brauchen:

$allChildrenWithSearchedEmail = $account->getMailinglist()->filter(function($child) { 
    return ($child->getEmail() == "[email protected]"); 
}); 
+0

Dank ist es auch möglich, die komplette Child-Liste nur auf E-Mail bestellt zu bekommen? – Tom

+0

In diesem Fall können Sie alle Einträge als ein Array mit 'getMailinglist() -> getValues ​​()' und verwenden Sie 'usort()' auf diesem Array. –