2017-04-24 5 views
0

Ich versuche, eine Ansicht zu erstellen, um den Gesamtumsatz für alle Lieferanten und Kunden eines Shops anzuzeigen. Der Gesamtumsatz für einen Kunden ist leicht zu erhalten, das Problem ist, wenn ich die Spalten mit den Marken erstellen muss, habe ich durch diese Website, Lehre, etc. gesucht, aber ich kann keine Lösung finden.Lehre - Dynamische Liste in Ansicht erstellen

SaleController.php

/** 
* @Route("/widget/summarize") 
* 
* @return Render 
*/ 
public function widgetSummarizeAction() 
{ 
    $suppliers = $this->getDoctrine()->getEntityManager()->createQueryBuilder() 
     ->select(['su.name AS name']) 
     ->from('AppBundle:Supplier', 'su') 
     ->getQuery() 
     ->getArrayResult() 
    ; 

    $data = $this->getDoctrine()->getManager()->createQueryBuilder()->groupBy('c.name') 
     ->select([ 
      's.id AS id', 
      's.invoiceDate AS invoiceDate', 
      'c.name AS customer', 
      'SUM(ROUND(s.amount * s.price, 2)) AS totalSales', 
      'su.name AS supplier', 
     ]) 
     ->from('AppBundle:Sale', 's') 
     ->leftJoin('s.supplierCustomer', 'sc') 
     ->leftJoin('sc.customer', 'c') 
     ->leftJoin('sc.supplier', 'su') 
     ->getQuery() 
     ->getArrayResult() 
    ; 

    return $this->render('AppBundle::home_widget.html.twig', [ 
     'title'  => 'Total Sales', 
     'icon'  => 'money', 
     'urlList' => $this->generateUrl($this->getUrlList()), 
     'rowRoute' => $this->getUrlEdit(), 
     'data'  => $data, 
     'columns' => [ 
      'customer'  => 'customer', 
      'totalSales' => 'Total Sales' 
     ] 
    ]); 

home_widget.html.twig

<div class="panel panel-default home-widget"> 
    <div class="panel-heading"> 
     <h2 class="panel-title pull-left"> 
      {% if icon is defined and icon is not empty %}<i class="fa fa-{{ icon }}"></i>{% endif %} 
      {{ title }} 
     </h2> 
     {% if urlList %} 
      <a class="btn btn-primary pull-right" href="{{ urlList }}">See All</a> 
     {% endif %} 
     <div class="clearfix"></div> 
    </div> 

    <div class="panel-body"> 
     {% if data is not empty and data is iterable %} 
      <table class="table table-bordered table-striped"> 
       <thead> 
        <tr> 
         {% for column in columns %} 
          <td>{{ column }}</td> 
         {% endfor %} 
        </tr> 
       </thead> 

       <tbody> 
        {% for row in data %} 
         {% set href = url(rowRoute, {'id': row.id}) %} 

         <tr> 
          {% for key,column in columns %} 
           <td> 
            <a href="{{ href }}"> 
             {{ row[key] | raw }} 
            </a> 
           </td> 
          {% endfor %} 
         </tr> 
        {% endfor %} 
       </tbody> 
      </table> 
     {% endif %} 
    </div> 
</div> 

Antwort

1

Vielleicht colulmns Namen bekommen versuchen von:

$em = $this->getDoctrine()->getManager(); 
$columns = $em->getClassMetadata(your_entity_name::class)->getFieldNames(); 

und eine Schleife durch die Spalten in Zweig Vorlage.

<thead> 
    <tr> 
     {% for column in columns %} 
      <td>{{ column }}</td> 
     {% endfor %} 
    </tr> 
</thead>