2014-10-04 6 views
5

Ich habe versucht, online nach einer endgültigen Lösung für diese Frage zu suchen, aber es gibt wirklich keine konkrete Lösung für Neulinge da draußen.Exportieren von einer zu vielen Beziehung auf Sonata Admin

Ich habe einen Eintrag, der viele EntryListing hat. In meinem EntryAdmin listMapper, kann ich Liste bequem Einträge durch eine Erklärung so einfach wie

->add('listings') 

, die einfach die Objekte zurückgibt, wie in der EntryListing __toString() Funktion definiert.

Gibt es eine Möglichkeit, das gleiche zu erreichen, wenn die Daten zu exportieren, indem sie die getExportFields overiding() Funktionen wie folgt:

public function getExportFields() 
{ 
    return array('name','tel','email','deviceType','postedOn','createdAt','facilitator','listings'); 
} 

Ihre Hilfe wird sehr geschätzt viel

Antwort

7

Es gibt eine andere Arbeit um Sie herum kann eine Eigenschaft in Ihrer Entität hinzufügen, die alle Eintragsliste in Verbindung mit dieser erhalten wird und in Getter-Funktion __toString() von verwandten zurückkehren, hatte ich das gleiche Szenario für Aufträge und auch die Liste, wenn Produkte mit Auftrag verknüpft, so habe ich es auf diese Weise getan durch Erstellen exportProducts in orders Unternehmen

protected $exportProducts; 

public function getExportProducts() 
{ 
    $exportProducts = array(); 
    $i = 1; 
    foreach ($this->getItems() as $key => $val) { 
     $exportProducts[] = $i . 
      ') Name:' . $val->getProduct()->__toString()() . 
      ' Size:' . $val->getProductsize() . 
      .../** Other properties */; 
     $i++; 
    } 
    return $this->exportProducts = join(' , ', $exportProducts); 
} 

Und in Admin-Klasse Ordnung i als

in getExportFields() exportProducts Eigenschaft definiert
public function getExportFields(){ 
    return array(
     'Products'=>'exportProducts', 
     ....// Other properties 
     ); 
} 

In heruntergeladen csv jeder, um die Liste der Produkte, die unter Products Zelle enthält als Komma getrennte Liste

Verwandte Themen