0
maatwebsiteのExcelを使用してExcelファイルをデータベースにインポートしています。現在、Laravelフレームワークを使用しています。同じExcelファイルの後の行を変更して更新することができます。そして、同じ更新ファイルをインポートする必要があります。アプリケーションは、変更された各行を認識し、自動的に更新する必要があります。データベースに格納されます。それは可能ですか?「更新された行」を含む同じExcelファイルをデータベースにインポート
私の実際のコードは、あなたがlaravelにfirstorNew()機能を試すことができ、ここで
public function store(Request $request)
{
// Excel::load(Input::file('archivo'), function($reader) {
// Getting all results
if($request->hasFile('archivo')){
$archivo = $request->file('archivo');
$nombre_original = $archivo->getClientOriginalName();
$extension = $archivo->getClientOriginalExtension();
// dd($nombre_original);
// $reader->dd();
$datosimportacion = New Importacion();
$datosimportacion->nombre_documento = $nombre_original;
$datosimportacion->responsable = Auth::user()->name;
$datosimportacion->save();
Excel::selectSheetsByIndex(0)->load($archivo, function($hoja) {
// $hoja->each(function($fila) {
foreach($hoja->toArray() as $fila)
{
Inventario::create($fila);
}
});
Session::flash('success', 'El archivo se proceso exitosamente.');
return redirect()->route('importaciones.index');
}else{
Session::flash('error', 'El archivo no se subio exitosamente.');
return redirect()->route('importaciones.index');
}
}
の詳細情報検索firstOrCreate/firstOrNewため
私はそれが動作しないでしょうね。ポイントは、Excelを変更し、db内の同じレコードを変更することです。しかし、firstOrNewはExcelの行の変更に関する新しいレコードを作成します。 Excelで新しい行を追加し、以前の行を変更しない場合にのみ機能します。 – Ankit
ありがとうございます。$ datosimportacionは、アップロードされたファイル、日付、ユーザーに関する情報のみを保存する別のテーブルです。私は必要なものは、データベースのレコードがdatabseに存在する場合は、ユニークなIDに基づいてデータベース内のものとアップロードされた新しいExcelレコードを比較しようとしているため、inventarioテーブルに移動する必要がありますアップロードされたファイル(各列を比較するよりも簡単です)の問題は、新しいファイルがデータベース上のレコードよりも多くの行を持つ場合です。このような状況では、どうすれば –
を追加できますか?動的な列がある場合は、JSONをデータベースに格納すると言うので、気にする必要はありませんが、jsonを解析して毎回比較する必要があるかもしれません。 –