برمجة لارافيل

توليد بيانات عشوائية بواسطة لارافيل – 1

السلام عليكم ورحمة الله وبركاته ،

في هذه التدوينة راح نتعرف على كيفية توليد بيانات عشوائية ويتم تخزينها في قاعدة  البيانات لمشروعنا ،

بدلا من عملها يدوياً  مما يقلل علينا الجهد والوقت وتنوع في الداتا التي تم توليدها .

اذا كنت مطور ويب فأكيد انت تعرف لارافل Laravel Framework  ، اذا كنت لا تعرف فهذه فرصتك لتتعرف عليه من هنا

https://laravel.com/

عموما راح نطبق عمليا كيفية صنع بيانات عشوائية لمتجر الكتروني ونتعرف على استخدام

Factory & Seeding  & migration database

اولا : لنفترض انك قمت بتثبيت لارافيل ويمكنك الان انشاء مشروع جديد بمسمى store

laravel new store

 

بعد الانتهاء من انشاء المشروع

نفتح المجلد باستخدام المحرر المفضل لديك وبعدها نفتح ملف env.

ونغير ما يلزم

  • اسم قاعدة البيانات التي تم انشائها لهذا المشروع
  • اسم المستخدم وكلمة المرور للاتصال بقاعدة البيانات

ملاحظة : القيم تكون بدون مسافات ، اذا ماكان عند باسوورد لقاعدة البيانات اتركها بدون قيمة

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=exampleDB
DB_USERNAME=root
DB_PASSWORD=

 

الان تم تجهيز الاساسيات للبدء في المثال . 

سوف ننشئ  migration & Models  لكل جدول نريده ( المنتجات ـ المراجعات )

  1. المنتجات products
  2. المراجعات reviews
  3. المستخدمين Users – موجود مسبقا لا نحتاج لانشائه من جديد

نفتح الترمينال او شاشة الاوامر cmd or terminal ونكتب

اذا كنت تستخدم محرر atom or VS code يمكنك تثبيت اضافة terminal ليتم فتح شاشة الاوامر عن طريق نفس المحرر.

php artisan make:migration product

php artisan make:migration review

php artisan make:model  Product

php artisan make:model  Review

 

بعد الانتهاء من تنفيذها

Migrations

نذهب الى  ملفات migrations تحت مجلد database

نفتح  ملف xxxx_product_xx.php

ونحدد الاعمدة التي نريدها في جدول المنتجات

  1. رقم معرف
  2. اسم المنتج
  3. وصف المنتج
  4. سعر المنتج
  5. صورة المنتج
  6. رقم معرف المستخدم الذي اضاف هذا المنتج .
  7.  تاريخ اضافة المنتج
  8.  تاريخ تحديث المنتج

 

نضع الكود اللي بالاسفل داخل function run

 

Schema::create('product', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->string('name'); 
    $table->integer('price'); 
    $table->text('description'); 
    $table->integer('user_id'); 
    $table->timestamps(); 
});

 

 

وهذا السطر داخل function down

Schema::dropIfExists('product');

هنا انتهينا من تهيئة ملف المنتجات .

تبقى ملف المراجعات

ملف المراجعات مسؤول عن التقييمات واراء العملاء في المنتج 

ويحتوي الجدول على الاعمدة التالية :

  1. رقم معرف
  2. نص المراجعة
  3. رقم معرف المنتج
  4. رقم معرف المستخدم – كاتب المراجعة .
  5. تاريخ اضافة المراجعة
  6. تاريخ تحديث المراجعة

 

نضع الكود اللي بالاسفل داخل function run

 

Schema::create('review', function (Blueprint $table) {
 $table->increments('id');
 $table->text('body');
 $table->integer('product_id');
 $table->integer('user_id');
 $table->timestamps();
 });

 

 

وهذا السطر داخل function down

Schema::dropIfExists('review');

 

هنا انتهينا من تهيئة ملف المراجعات

Models

الان نذهب لملفات Models بحيث نكون العلاقات فيما بين الجداول ونربطها ببعض .

نفتح مجلد app ونحصل في اسفله ملفات models التي انشأناها .

 Product.php

راح اوصف ما سوف نفعله شفهيا لتكون الصورة واضحة قبل الاكواد

المنتج سوف يكون لديه الكثير والكثير من المراجعات والتقييمات ،

اذاً علاقته بجدول المراجعات Review علاقة one product has many reviews

المنتج سوف يكون له مستخدم واحد فقط هو المالك له ، بمعنى المنتج ينتمي الى مستخدم واحد فقط

لهذا السبب سوف تكون علاقة المنتج بجدول المستخدم one product has one user.

ولهذا السبب راح ننشئ functions يعمل على هذه العلاقات

public function reviews()
{
    return $this->hasMany(\App\Review::class);
}

public function user()
{
    return $this->belongsTo(\App\User::class);
}

 

كذا انتهينا من ربط العلاقات من ناحية المنتج

ننتقل لملف المراجعات

Review.php

هذا الملف مسؤول عن علاقة المراجعة او التقييم بالجداول الاخرى ،

وكما نعلم ان لكل مراجعة تكون متعلقة بمنتج واحد وهذا يعني ان العلاقة تكون on review to one product

أي ان المراجعة تنتمي لمنتج واحد فقط

وأيضا التقييم سوف يكتبه مستخدم واحد عن المنتج وهذا يعني ان العلاقة تكون

one review can write it by only one user

أي ان المراجعة تنتمي لمستخدم واحد فقط . هو صاحبها .

ونلخص ذلك ان لكل مراجعة او تقييم تتعلق بمنتج واحد ومستخدم واحد وهو يكون كاتبها .

الان  راح ننشئ functions تقوم بعمل هذه العلاقات

 

public function Product()
{
    return $this->belongsTo(\App\Product::class);
}

public function User()
{
    return $this->belongsTo(\App\User::class);
}

 

 

User.php

ماذا عن المستخدم والعلاقة التي تكون من جهته بالمنتجات والمراجعات

المستخدم يستطيع انشاء منتج او اكثر وهذا يعني ان العلاقة one to many

المستخدم يستطيع عمل مراجعة او اكثر للمنتجات وهذا يعني ان العلاقة one to many ايضا

الزخ  🙂  هذا الكود في ملف User.php

 

public function products()
{
   return $this->hasMany(\App\Product::class);
}

public function reviews()
{
   return $this->hasMany(\App\Review::class);
}

 

 

الان نكون انتهينا من تهيئة Models.

لحظة لحظة عشان نتأكد انه شغلنا ماشي تمام راح ننفذ migration command لانشاء الجداول في قاعدة بيانات المشروع حقنا .

اذا تمام فيكون الوضع تمام التمام واذا ما كان تمام فيكون مش تمام التمام 🙂

ننفذ هذه الأمر على بركة الله

php artisan migrate

 

عشان تتأكد من نتيجة شغلك ، افتح قاعدة بيانات المشروع وراح تحصل كل الجداول اللي عملنا على تهيئتها واعمدتها .

 الآن جاهزين للبدء في تهيئة عملية توليد البيانات وتخزينها في قاعدة بيانات المشروع 

راح تكون في تدوينة مستقلة

http://wp.me/p8ljSC-61

 

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Back To Top