Witam, potrzebuje waszej pomocy :)
Muszę w Laravel kopiować dane z tabeli A do tabeli B, przy okazji modyfikować kilka danych (datę, przetłumaczyć kilka rzeczy...). do tej pory używałem fikcji "chunkById"
Crona do metody ustawiłem co godzinę, na początku funkcji zaznaczam w tabeli A że dane zostały już zaimportowane następnie importuje dane.
Problem polega na tym że zarażają się przypadki kiedy w tabeli A dane zostały oznaczone jako zaimportowane a w tabeli B ich nie ma. Domyślam się ze skrypt wysypuje się w połowie działania.
DB::table('list_of_cars_to_imports')->where('been_imported', null)->orderBy('id', 'ASC')->chunkById(100, function ($carInport) {
foreach ($carInport as $car) {
if (Car::where('stock', $car->id)->first() == null) {
DB::table('list_of_cars_to_imports')
->where('id', $car->id)
->update(['been_imported' => true]);
$Cars = new Car;
$Cars->stock = $car->id;
$Cars->vin = $car->VIN;
$Cars->save();
}
}
});
Dodam że aktualnie w tabeli jest 300,000 rekordów a co dzień muszę przerzucać około 5.000 rekordów.
podpowiecie co robię źle i co muszę poprawić?