Ich versuche, Daten aus einer Textdatei zu erhalten und die Daten an die Datenbank zu übergeben. Die Sache ist, jedes Mal, wenn ich die Ansicht neu lade, werden die Daten gesendet und das bedeutet, dass ich doppelte Daten erhalte, gibt es eine Möglichkeit, dies zu verhindern? Vielleicht die Datei abschneiden oder die Zeilennummer der letzten verarbeiteten Zeile speichern?Doppelte Daten beim erneuten Laden der Ansicht
Auch die Art und Weise, wie die Textdateien generiert werden, ist, dass ich jeden Tag eine neue Textdatei mit dem Datum auf den Namen der Datei bekomme, vielleicht ein anderer Ansatz, den ich dachte, war eine neue Datenbanktabelle zu erstellen, wo ich markieren würde jede Datei, die ich als "verarbeitet" verarbeite, so dass die Funktion nicht mehr als einmal dieselbe Datei verarbeitet.
Hier ist ein Beispiel für die Textdatei:
1618 0002 9 9 505 04129284134 4141191269 4141191269 56984 4 002 001 4
1606 0000 9 1159 4169191388 4169191388 4 012 0
1607 0009 7 9 505 04129284134 1245 1245 56984 4
1619 0000 9 6 1172 2129922686 2129922686 4 013 0
1606 0000 9 1159 4169191388 4169191388 4 012 0
1607 0009 7 9 505 04129284134 1245 1245 56984 4
1619 0000 7 6 521 1188# 1172 1172 0 001 4
1606 0000 9 1159 4169191388 4169191388 4 012 0
1607 0009 7 9 505 04129284134 1245 1245 56984 4
Und hier ist die Funktion, die ich auf meine Routen Datei bin mit:
Route::get('calls', function() {
foreach (file(public_path() . "/calls.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
$calls = new Calls();
$calls->time = trim(substr($line, 0, 4));
$calls->duration = trim(substr($line, 5, 4));
$calls->cond_code = trim(substr($line, 10, 1));
$calls->code_dial = trim(substr($line, 15, 1));
$calls->code_used = trim(substr($line, 18, 3));
$calls->dialed_num = trim(substr($line, 24, 11));
$calls->calling_num = trim(substr($line, 39, 11));
$calls->clg_num_in_tac = trim(substr($line, 53, 11));
$calls->auth_code = trim(substr($line, 64, 5));
$calls->frl = trim(substr($line, 70, 1));
$calls->ixc_code = trim(substr($line, 77, 3));
$calls->in_crt_id = trim(substr($line, 85, 3));
$calls->save();
}
return View::make('test')
->with('calls', Calls::all());
});
Ist das eine TXT-Datei oder eine Tab-getrennte csv? – Jeff
Die Bearbeitung Ihrer Formularanforderung über die "Get" -Route ist eine schlechte Übung. Schau dir meine Lösung unten an und schau, ob es dir passt. – Gayan
@Jeff es ist eine Textdatei mit Spalten fester Breite. –