Laravel-excel: クロージャのシリアル化に失敗しました:「Illuminate \ Http \ UploadedFile」のシリアル化は許可されていません

作成日 2017年06月13日  ·  3コメント  ·  ソース: Maatwebsite/Laravel-Excel

[質問]

maatwebsite / excel 2.1、Laravel 5.4

こんにちは、みんな。 Excelファイルをインポートしようとしていますが、「クロージャのシリアル化に失敗しました: 'Illuminate \ Http \ UploadedFile'のシリアル化は許可されていません」というエラーが表示されます。 トラブルシューティングを試しましたが、なぜこの問題が発生するのかわかりません。 これは、Excelファイルのインポートを処理するために使用するソースコードです。

if($request->hasFile('file')){
     $file = $request->file('file')->getRealPath();
     \Excel::filter('chunk')->load($file)->chunk(200, function($result) use ($request){
        foreach ($result as $item) {
           if(collect($item)->has('title') && collect($item)->has('category_id')  && collect($item)->has('file')){
                Content::create([
                     'title' => $item->title,
                     'category_id' => $item->category_id,
                     'file' => $item->file,
                     'reference' => $request->input('reference')
                ]);
           }
        }
       });
      return redirect()->back();
}

この問題を解決するのを手伝ってください。

最も参考になるコメント

$requestをクロージャーに渡すことはできません。これは、シリアル化されてキューに入れられるためです。 明示的な変数を渡す必要があります。

これを試して:

if($request->hasFile('file')){
     $file = $request->file('file')->getRealPath();
    $reference = $request->input('reference');
     \Excel::filter('chunk')->load($file)->chunk(200, function($result) use ($reference){
        foreach ($result as $item) {
           if(collect($item)->has('title') && collect($item)->has('category_id')  && collect($item)->has('file')){
                Content::create([
                     'title' => $item->title,
                     'category_id' => $item->category_id,
                     'file' => $item->file,
                     'reference' => $reference
                ]);
           }
        }
       });
      return redirect()->back();
}

全てのコメント3件

$requestをクロージャーに渡すことはできません。これは、シリアル化されてキューに入れられるためです。 明示的な変数を渡す必要があります。

これを試して:

if($request->hasFile('file')){
     $file = $request->file('file')->getRealPath();
    $reference = $request->input('reference');
     \Excel::filter('chunk')->load($file)->chunk(200, function($result) use ($reference){
        foreach ($result as $item) {
           if(collect($item)->has('title') && collect($item)->has('category_id')  && collect($item)->has('file')){
                Content::create([
                     'title' => $item->title,
                     'category_id' => $item->category_id,
                     'file' => $item->file,
                     'reference' => $reference
                ]);
           }
        }
       });
      return redirect()->back();
}

@patrickbrouwersに感謝します。 それは私のライブを保存しました:+1:。

@patrickbrouwersに感謝します。

このページは役に立ちましたか?
0 / 5 - 0 評価