反序列化对象导出Excel刀片视图

时间:2017-03-09 10:03:40

标签: laravel

我尝试使用数据库中的文本列中的unserialize对象从刀片视图导出excel文件,但是我收到错误。

错误:

  

调用未定义的方法Illuminate \ Database \ Query \ Builder :: transform()

这是我的控制器:

 public function ExportExcel($id)
{
    $order = Order::find($id);

    $order->transform(function ($order , $key){

        $order->cart = unserialize($order->cart);
        return $order;

    });


    Excel::create('facture', function($excel) use ($order) {
        $excel->sheet('Excel', function($sheet) use ($order) {
            $sheet->loadView('cotisation_structure.factureExcelsingle')->with(['order' => $order]);
        });
    })->export('xls');

}

这是我的刀片视图:

<html> <body>
<thead>
<tr>
    <th>N° Facture</th>
    <th>N° licence</th>
    <th>Nom</th>
    <th>Prénom</th>
    <th>Type d'activité</th>
    <th>Saison</th>
    <th>Mode de paiement</th>
    <th>Montant</th>
    <th>Date Achat</th>
</tr>
</thead>
<tr>
    <td>{{$order->num_facture}}</td>
    <td>{{$order['item']->num_licence}}</td>
    <td>{{$order['item']->lb_nom}}</td>
    <td>{{$order['item']->lb_prenom}}</td>
    <td>{{$order['item']->activite_licencie->lb_activite}}</td>
    <td>{{$order['item']->saison->lb_saison}}</td>
    <td>{{$order->payment_method}}</td>
    <td>{{$order['price']}}</td>
    <td>{{$order->date_achat}}</td>
</tr>

似乎Transform方法不适用于对象,仅适用于集合。

有人有想法解决这个问题吗?谢谢我提前

1 个答案:

答案 0 :(得分:1)

Eloquent find方法返回单个模型实例而不是返回模型集合。

因此,转换方法仅适用于集合而非单个模型实例。

试试这个

public function ExportExcel($id)
{
   $order = Order::find($id);
   $order->cart = unserialize($order->cart);


   Excel::create('facture', function($excel) use ($order) {
     $excel->sheet('Excel', function($sheet) use ($order) {
         $sheet->loadView('cotisation_structure.factureExcelsingle')->with(['order' => $order]);
     });
   })->export('xls');

}   

注意:转换函数不在单个对象上处理集合。