Revision 292 | Revision 294 | Zur aktuellen Revision | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace App\Console\Commands;use App\Models\Directory;use App\Models\Item;use App\Models\Action;use App\Models\Medium;use App\Models\Price;use App\Models\ActionMedium;use App\Models\ItemMedium;use App\Models\DirectoryMedium;use Illuminate\Console\Command;use Illuminate\Support\Facades\DB;class convertDB extends Command{/*** The name and signature of the console command.** @var string*/protected $signature = 'command:convertDB';/*** The console command description.** @var string*/protected $description = 'Converts the old webanOS-DB to laravel';/*** Execute the console command.** @return void*/public function handle(): void{$this->info( date( "d.m.Y H:i" ) . ": Verarbeitung gestartet" );$this->migrateMedia();$this->migrateDirs();$this->migrateItems();$this->migrateActions();$this->info( date( "d.m.Y H:i" ) . ": Verarbeitung beendet" );}private function migrateDirs(){$this->info( date( "d.m.Y H:i" ) . ": Migriere Kategorien" );$sql = 'SELECT*FROMdirectory';$dirs = DB::connection( 'old' )->select( $sql );foreach ( $dirs as $row ){$ersteller = $row->erstellt_von;if ( !$ersteller ){$ersteller = "WebanOS Laravel Upgrade";}$bearbeiter = $row->letzte_Aenderung_von;if ( !$bearbeiter ){$bearbeiter = "WebanOS Laravel Upgrade";}Directory::factory()->createQuietly( ["id" => $row->ID,"directory_id" => $row->Father,"name" => $row->Name,"status" => $row->status,"kennung" => $row->Kennung,"description" => $row->Beschreibung,"short_line_1" => $row->short_line_1,"url" => $row->url,"created_at" => $row->erstellt_am,"created_by" => $ersteller,"updated_by" => $bearbeiter,"updated_at" => $row->letzte_Aenderung_am,] );}}private function migrateItems(){$this->info( date( "d.m.Y H:i" ) . ": Migriere Artikel" );$sql = 'SELECT*FROMartikelWHEREfather>=-1';$dirs = DB::connection( 'old' )->select( $sql );foreach ( $dirs as $row ){$item = new Item();$item->id = $row->ID;$item->directory_id = $row->Father;$item->name = $row->kurzbezeichnung;$item->status = $row->status;$item->kennung = $row->kennung;$item->description = $row->beschreibung;$item->created_at = $row->erstellt_am;$item->updated_at = $row->letzte_Aenderung_am;$ersteller = $row->erstellt_von;if ( !$ersteller ){$ersteller = "WebanOS Laravel Upgrade";}$bearbeiter = $row->letzte_Aenderung_von;if ( !$bearbeiter ){$bearbeiter = "WebanOS Laravel Upgrade";}$item->created_by = $ersteller;$item->updated_by = $bearbeiter;$item->save();}$this->info( date( "d.m.Y H:i" ) . ": Migriere Preise" );$sql = "SELECTp.*FROMpreise pJOINartikel aONa.id=p.artikel_idWHEREa.father >=-1";$prices = DB::connection( 'old' )->select( $sql );foreach ( $prices as $price ){Price::factory()->createQuietly( ["item_id" => $price->artikel_id,"preis_index" => $price->preis_index,"preis" => $price->preis,"staffel" => $price->staffel,"created_at" => $price->geaendert_am,"created_by" => $price->geaendert_von,"updated_by" => $price->geaendert_von,"updated_at" => $price->geaendert_am] );}}private function migrateActions(){$this->info( date( "d.m.Y H:i" ) . ": Migriere Aktionen" );$sql = "SELECT*FROMAktionen";$actions = DB::connection( 'old' )->select( $sql );foreach ( $actions as $action ){$actionDB = new Action();$actionDB->id = $action->ID;$actionDB->headline = $action->headline;$actionDB->text = $action->text;$actionDB->rang = $action->rang;$actionDB->config = $action->config;$actionDB->category = $action->Kategorie;$actionDB->notes = $action->notizen;$actionDB->valid_from = $action->von;$actionDB->valid_to = $action->bis;$actionDB->created_by = "WebanOS Laravel Upgrade";$actionDB->updated_by = "WebanOS Laravel Upgrade";$actionDB->save();}}public function migrateMedia(){$this->info( date( "d.m.Y H:i" ) . ": Migriere Medien" );$sql = "SELECT*FROMmedien";$media = DB::connection( 'old' )->select( $sql );foreach ( $media as $medium ){$mediumDB = new Medium();$mediumDB->id = $medium->id;$mediumDB->name = $medium->name;$mediumDB->folder = $medium->folder;$mediumDB->medium_type_id = $medium->typ;$mediumDB->description = $medium->beschreibung;if ( $medium->erstellt_am ){$mediumDB->created_at = date( "Y-m-d H:i:s", $medium->erstellt_am );}$ersteller = $medium->erstellt_von;if ( !$ersteller ){$ersteller = "WebanOS Laravel Upgrade";}$bearbeiter = $medium->letzte_aenderung_von;if ( !$bearbeiter ){$bearbeiter = "WebanOS Laravel Upgrade";}$mediumDB->created_by = $ersteller;$mediumDB->updated_by = $bearbeiter;$mediumDB->save();}}}