1
this libアップロードの動作は素晴らしいです。私は優れた物の数を持っており、私はそれらを通り抜けて、私が望むものを何でもします。Laravel:アップロード数をカウントして返します。
質問はExcelのアップロード中です。特定のオブジェクトが既に存在するかどうかを確認する必要があります。そうでない場合は$rejected
変数を増やしてください。$uploaded
変数を作成して増やしてください。その結果、私は結果を返信したいと思います:アップロードされた人数と拒否された人は何人ですか?そのようなことをする最善の方法は何ですか?関数内の変数にはアクセスできないことは明らかです。ここでベストプラクティスは何ですか?
public function uploadUsingFile($file)
{
$rejected = 0;
$uploaded = 0;
Excel::load($file, function ($reader) {
foreach ($reader->toArray() as $row)
{
$plateAlreadyExist = Plate::where('serial_number', $row['plate_serial_number'])->exists();
if ($plateAlreadyExist) {
$rejected += 1;continue;
}
$supplier = Supplier::firstOrCreate(['name' => $row['supplier_name']]);
$statusName = EquipmentStatusCode::firstOrCreate(['name' => $row['status_name']]);
$plateType = PlateType::firstOrCreate(['name' => $row['plate_type_name']]);
$process = Process::firstOrCreate(['name' => $row['process_name']]);
$project = Project::firstOrCreate(['name' => $row['project_name']]);
$plateQuality = PlateQuality::firstOrCreate(['name' => $row['plate_quality']]);
$wafer = Wafer::firstOrCreate(['serial_number' => $row['wafer_serial_number']]);
$data = [
'serial_number' => $row['plate_serial_number'],
'crc_code' => $row['crc_code'],
'supplier_id' => $supplier['id'],
'equipment_status_code_id' => $statusName['id'],
'plate_type_id' => $plateType['id'],
'process_id' => $process['id'],
'project_id' => $project['id'],
'plate_quality_id' => $plateQuality['id'],
'wafer_id' => $wafer['id'],
'created_by' => Auth::user()->id,
];
if($data)
{
Plate::create($data);
$uploaded += 1;
}
}
});
return [ 'uploaded' => $uploaded, 'rejected' => $rejected ];
}
私はこの方法を試してみました。それは何らかの理由で機能しません。 – user3641381
答えを更新しましたが、 '&'演算子を使って変数を参照渡ししましたか? – Yat23
ありがとう!これはうまくいくようです。あなたの答えに '&'はこれと何をしなければならないのかを気にしていますか? – user3641381