2017-04-24 9 views
0

私は店のすべてのサプライヤーと顧客の合計売上を表示するためのビューを作成しようとしています。 顧客の総売上高は入手しやすいですが、問題はブランドを使って列を作成しなければならないとき、私はこのサイト、教義などを見ていますが、解決策が見つかりません。小枝テンプレート内の列を通じてDoctrine - ビューでダイナミックリストを作成

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

とループ:

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> 

答えて

1

たぶんによりcolulmns名を取得してみてください。

<thead> 
    <tr> 
     {% for column in columns %} 
      <td>{{ column }}</td> 
     {% endfor %} 
    </tr> 
</thead> 
関連する問題