2016-08-08 65 views
-1

Ich möchte alle untergeordneten Datensätze und Datensätze mit dem Wert des Fremdschlüssels null zurückgeben, indem ich Doktrinannotation verwende. Dies ist Benutzereinheit:Doctrine annotaion zum Zurückgeben von Nulldatensätzen in der untergeordneten Tabelle

.... 
    /** 
    * @ORM\OneToMany(targetEntity="AppBundle\Entity\DeliveryMethods", mappedBy="owner") 
    */ 
    private $delivery_methods; 

.... 

Und hier ist die Lieferung Methode Einheit (Tabelle mit Kind Zeilen):

.... 
    /** 
    * @ORM\ManyToOne(targetEntity="AppBundle\Entity\User", inversedBy="delivery_methods") 
    * @ORM\JoinColumn(name="owner", nullable=true) 
    */ 
    private $owner; 
.... 

Welche Veränderung, die ich in den Anmerkungen machen müssen?

Dank

+0

Wenn delivery_method Besitzer = null hat, wird es nicht an irgendeinen Besitzer gebunden ... Also gibt es keinen Besitzer mit einem Null Kind. – Alsatian

+0

Ich weiß, und ich möchte alle 'owner_id = null' Datensätze mit anderen Ergebnis zurückgeben, ich meine etwas wie 'owner_id = x ODER owner_id = null', während' x' eine 'user_id' ist. – desatir7316

+1

Die Annotation soll verwandte Entitäten zurückgeben. Nichts anderes. – Alsatian

Antwort

0

Sie können eine neue repository Klasse schreiben und so etwas wie unten hinzufügen:

class DeliveryMethodsRepository extends EntityRepository { 

    /** 
    * 
    * @param type $owner 
    * @return type 
    */ 
    public function getOwnerAssociatedOrOrphanEntities($ownerId) { 

     $qb = $this->createQueryBuilder("dm") 
      ->andWhere("dm.owner = :owner OR dm.owner = NULL") 
      ->setParameter("owner", $ownerId); 

     return $qb->getQuery()->execute(); 
    } 
} 

Und diese Methode von DeliveryMethod Repository von Controller nennen.

Hinweis: Sie können auch benutzerdefinierte query builder in einer beliebigen Controller-Methode schreiben.

Hoffe es hilft!

+0

Yup, endlich musste ich so etwas benutzen. Vielen Dank. – desatir7316