ببعض الأحيان نحتاج لإدخال بيانات موجودة لدينا على شكل csv، في إطار العمل لارافيل يعتبر ذلك سهل جداً، حيث يجب علينا إنشاء seeder وبداخل الـ seeder يتم تحديد مسار الملف وعمل loop على البيانات.
في هذه الشرح سيتم إستيراد بيانات الدول (مفتاح الدولة، الدولة، المفتاح).
خطوات إدخال البيانات من ملف CSV File.
إنشاء model وملف migration
php artisan make:model Country -m
public function up()
{
Schema::create('countries', function (Blueprint $table) {
$table->id();
$table->string('key_name');
$table->string('name');
$table->string('code');
$table->timestamps();
});
}php artisan migrate
إنشاء seeder
php artisan make:seeder CountrySeeder
بداخل الكلاس CountrySeeder نقوم بتعريف رابط الملف وعمل loop على البيانات التي بداخل الملف
public function run()
{
$csvFile = fopen(public_path("countries.csv"), "r");
$notFirstLine = false;
while (($data = fgetcsv($csvFile, 2000, ",")) !== FALSE) {
if ($notFirstLine) {
Country::create([
"key_name" => $data['1'],
"name" => $data['2'],
"code" => $data['3']
]);
}
$notFirstLine = true;
}
fclose($csvFile);
}توضيح
- استخدام الدالة fopen لفتح الملف countries.csv مع تحدد المسار، حيث تم وضعه في المجلد public، وإعطاءه الخاصية read.
- تعريف متغير (notFirstLine) وإعطاءه قيمة false، حتى لا يتم قراءه الهيدرز.
- عمل loop على ملف csf حيث تم إستخدام fgetcsv، ومن ثم يتم قراءة المتغير notFirstLine اذا كانت قيمته true أن يتم إدخال البيانات من خلال الدالة create.
لقد تم تحديد مسار الملف countries.csv حيث تم وضعة داخل المجلد public.
نقوم برفع الملف ووضعة في المجلد public وذلك، لأننا قمنا بتحديد ذلك في مسار seed
لتحميل ملف الدول مع المقدمة من هنا
تنفيذ الأمر
php artisan db:seed --class=CountrySeeder
إدخال البيانات من ملف JSON
لإدخال البيانات من ملف JSON يجب إتباع نفس الخطوات السابقة من حيث إنشاء Migration, Model, Seeder لكن ما يختلف هو محتويات ملف seeder
class CountrySeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$json = File::get(public_path("countries.json"));
$countries = json_decode($json);
foreach ($countries->countries as $key => $value) {
Country::create([
"key_name" => $value->key_name,
"name" => $value->name,
"code" => $value->code
]);
}
}
}توضيح
- رفع الملف countries.json بداخل المجلد public.
- إستخدام الدالة File:get لجلب الملف حيث تم تحديد المسار من خلال دالة public_path ثم إسم الملف.
- تم عمل json_decode لمحتويات الملف.
- دالة foreach للبيانات الموجوده بداخل الملف وإستخدام الدالة create لإدخال البيانات.
تنفيذ الأمر
php artisan db:seed --class=CountrySeeder
مقالة مفيدة ... شكراً لك
عظيم ياهندسه جزاك الله كل خير