Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:back-end_framework:laravel:laravel_fajlkezeles

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalonElőző változat
Következő változat
Előző változat
oktatas:web:back-end_framework:laravel:laravel_fajlkezeles [2025/04/22 13:19] – [CSV állomány] resahhoktatas:web:back-end_framework:laravel:laravel_fajlkezeles [2025/08/01 11:14] (aktuális) – eltávolítva admin
Sor 1: Sor 1:
-[[oktatas:web:back-end_framework:laravel|< Laravel]] 
  
-====== Laravel fájlkezelés ====== 
- 
-  * **Szerző:** Rékási József 
-  * Copyright (c) 2025, Rékási József 
-  * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] 
-  * Web: https://szit.hu 
- 
-===== Adatbázis tábla feltöltése szöveges állományból ===== 
-Előfordulhat, hogy egy adatbázis táblát egy valamilyen meglévő szöveges állományból kell feltölteni. 
-==== SQL állomány ==== 
-Példa sql állomány drink.sql 
-<code sql> 
-INSERT INTO types (type) VALUES 
-('Sör'), 
-('Bor'), 
-('Pálinka'), 
-('Üdítőital'), 
-('Energiaital'), 
-('Koktél'), 
-('Tea'), 
-('Kávé'), 
-('Smoothie'); 
- 
-INSERT INTO packages (package) VALUES 
-('0.33l palack'), 
-('0.5l palack'), 
-('1l palack'), 
-('2l palack'), 
-('330ml doboz'), 
-('500ml doboz'), 
-('4db-os csomag'), 
-('6db-os csomag'), 
-('1l üveg'), 
-('2l üveg'); 
- 
-INSERT INTO drinks (drink, amount, type_id, package_id) VALUES 
-('Heineken', 10, 1, 1), 
-('Budweiser', 15, 1, 1), 
-('Chardonnay', 12, 2, 3), 
-('Cabernet Sauvignon', 5, 2, 3), 
-('Szilvapálinka', 8, 3, 2), 
-('Apple Juice', 20, 4, 1), 
-('Coca-Cola', 30, 4, 1), 
-('Monster', 12, 5, 1), 
-('Mojito', 6, 6, 1), 
-('Green Tea', 25, 7, 1); 
-</code> 
-Az adatbázisnak és a tábláknak létezniük kell, futtasuk először a migrációs állományokat. A fájlt helyezzük el a /database/seeders könyvtárban. A Laravel alapértelmezetten itt fogja keresni a fájlt, ha máshol szeretnénk elhelyezni természetesen van rá lehetőség, de akkor definiálni kell az elérési útvonalat. 
-Készítsünk seeder állományt: 
-<code> 
-php artisan make:seeder DrinkSeeder 
-</code> 
-A /database/seeders könyvtárban létrejön a seeder, ez fogja feltölteni az adattáblákat. 
-Emeljük be a seederbe a működéshez szükséges osztályt. 
-<code> 
-use Illuminate\Support\Facades\DB; 
-</code> 
-A seeder run() metódusát töltsük fel az alábbi kóddal: 
-<code php> 
-public function run(): void { 
- 
-    $sql = file_get_contents( __DIR__ . "/drink.sql" ); 
- 
-    DB::unprepared( $sql ); 
-} 
-</code> 
-Ez beolvassa az sql kiterjesztésű fájlt és az ott található utasításokat lefuttatja. Ha a táblákat egyesével szeretnénk feltölteni abban az esetben több sql állományra van szükség és külön seedereket kell készíteni hozzájuk. Ezeket összefogva a DatabaseSeeder osztályban tudjuk futtatni. 
-Futtasuk le a DrinkSeedert. 
-<code> 
-php artisan db:seed --class=DrinkSeeder 
-</code> 
-==== CSV állomány ==== 
-Példa CSV állomány drink.csv 
-<code> 
-id:drink:amount:type_id:package_id 
-1:Heineken:10:1:1 
-2:Budweiser:15:1:1 
-3:Chardonnay:12:2:3 
-4:Cabernet Sauvignon:5:2:3 
-5:Szilvapálinka:8:3:2 
-6:Apple Juice:20:4:1 
-7:Coca-Cola:30:4:1 
-8:Monster:12:5:1 
-9:Mojito:6:6:1 
-10:Green Tea:25:7:1 
-</code> 
-Készítsük el a seedert. 
-<code> 
-php artisan make:seeder DrinkSeeder 
-</code> 
-A csv fájlok beolvasásához szükség van egy külső csomagra ami alapértelmezetten nem része a Laravel projektnek. Ezt telepíteni kell a composer segítségével. 
-<code> 
-composer require league/csv 
-</code> 
-Ennek a csomagnak a Reader osztályát és a Storage osztályt be is kell emelni a seederbe. Ezen kívül még szükséges az adattábla modellje is, a feltöltés modellen keresztül fog megtörténni. 
-<code php> 
-use League\Csv\Reader; 
-use App\Models\Drink; 
-use Illuminate\Support\Facades\Storage; 
-</code> 
-A Strorage osztályra azért van szükség mert a Laravel alapértelmezetten ezen az útvonalon keresi a csv kiterjesztésű fájlt: 
-<code> 
-/storage/app/private/public/ 
-</code> 
-Természetesen máshol is el lehet helyezni a fájlt, de akkor definiálni kell az elérési útvonalat. 
-A seeder run() metódusában helyezzük el az alábbi kódot: 
-<code php> 
-public function run(): void { 
-         
-    $csv = Reader::createFromPath( Storage::path( "public/drink.csv" ), "r" ); 
-    $csv->setHeaderOffset( 0 ); 
- 
-    $records = $csv->getRecords(); 
-    foreach( $records as $record ) { 
- 
-        Drink::create([ 
-            "id" => $record[ "id" ], 
-            "drink" => $record[ "drink" ], 
-            "amount" => $record[ "amount" ], 
-            "type_id" => $record[ "type_id" ], 
-            "package_id" => $record[ "package_id" ] 
-        ]); 
-    } 
-} 
-</code> 
-Ez a sor beolvassa a fájlt a megadott útvonalról: 
-<code php> 
-$csv = Reader::createFromPath( Storage::path( "public/drink.csv" ), "r" ); 
-</code> 
-A következő sorban kell megadni a tábla fejlécét, ha az állomány tartalmazza. Ez indexelve van, tehát, ha az első sor a fejléc abban az esetben az értéke: 0. 
-<code php> 
-$csv->setHeaderOffset( 0 ); 
-</code> 
-Ez a sor kiolvassa a sorokat a fájlból: 
-<code php> 
-$records = $csv->getRecords(); 
-</code> 
-Majd a foreach ciklus bejárja az adathalmazt és a Drink model create() metódusával kiírja az adatot. 
oktatas/web/back-end_framework/laravel/laravel_fajlkezeles.1745320786.txt.gz · Utolsó módosítás: 2025/04/22 13:19 szerkesztette: resahh