استثمر للحياة

مواضيعنا

قواعد البيانات في Laravel

حجم الخط

databaseقواعد البيانات في Laravel

تحدثنا في درس تهيئة بيئة العمل عن كيفية تهيئة قواعد البيانات . و ذلك بالتعديل على ملف ....
pp/config/database.php      . و إختيار نوع  قواعد البيانات التي سوف تستخدمها .

انظر تهيئة قواعد البيانات

و الان ننحدث عن قواعد البيانات في لارافيل  Laravel  من الف الى ياء .


أولاً : إنشاء جدول جديد migrate


سنستخدم – من خلال   Composer - نظام  التهجير migrations والذي يُعتبر نظاما لإدارة قواعد البيانات في لارافيل    Larave، و الذى يمكننا من  إنشاء أي جداول أو إضافة حقول والتعديل عليها آلياً بدون الرجوع للعمل اليدوي ،  حيث  يتم وصف  الجداول وحقولها بطريقة سهلة و مرنة  .


لإنشاء ملفmigration  جديد


من خلال شاشة الأوامر نكتب

php artisan migrate:make create_users_table

سيقوم  laravel  بإنشاء ملف جديد داخل مُجلد  app/database/migrations   له نفس  الاسم الذي حددته في الأمر السابق

(  create_users_table)   مسبوقاً بترقيم يُمثل تاريخ إنشائه حتى يتسنى لـlaravel    معرفة الترتيب الذي يجب اتباعه

لدى تنفيذ التهجير , يظهر الملف  هكذا

create_users_table.php

و يكون مسبوقاً بتاريخ و زمن إنشاء الملف  . فإذا فتحنا الملف بمحرر نصوص سنجد محتواه هو

 
من الواضح أن الفئة أو الـclass    المسمى  CreateUsersTable   يحتوي على دالتين الأولى  up والتي سنكتب فيها أسم الجدول و ما هي الحقول المرغوب فى إنشاءها داخل الجدول .
و الثانية    down والتي نُحدد فيها ما الذي يجب القيام به لدى إلغاء التهجير في حال ما إذا أردنا العودة بقاعدة البيانات إلى حالها الأولى قبل تنفيذ التهجير .

ملاحظة  :

 يمكن استخدام     --table  أو  --create التي تُحدد اسم الجدول الذي نرغب في إنشاءه فمثلا لو رغبنا في  إنشاء  جدول users  بحيث نحدد  اسم الجدول أثناء كتابة الأمر فى الcomposer   فسيكون ذلك على النحو التالي:


    php artisan migrate:make add_votes_to_user_table--table=phone
php artisan migrate:make create_users_table --create=users

و عندما نفتح ملف

 create_users_table.php

سنجد أن دالتي   up  و  down  تحتويان أكواد و أيضا تحتويان على اسم الجدول




ثانياً : إنشاء و حذف الحقول

كل ما قمنا به  حتى الآن  هو إنشاء الجدول  ،  فكيف ننشئ الحقول بإستخدام الدالة Schema:: بخاصية create و هي لها بارامترين الاول هو اسم الجدول و الثاني هو  دالة  الإنشاء .

نفرض إننا نريد إنشاء  حقل للاسم  name  من النوع string  و أخر لكلمة المرور passمن النوع string   فقط لا غير . و من المعروف اننا يجب انشاء حقل id  increments , و نقوم بعمل جدول خاص بلارافيل هو timestampsو هو خاص بعملية التهجير ليحدد زمن و وقت أي تحديث فى الجدول .

فتصبح الدالة up

public function up ()
            {
            Schema::create('users', function($users)
{
            $users->increments('id');
            $users->string('name');
            $users->string('pass');
            $users->timestamps();
)}
}
 

فى دالةup  
استخدامنا  أمر create  وهذا الأمر لإنشاء جدول جديد ، و  create   تقبل  بإدخال بارامتران فيها ، أول بارامتر وهو اسم الجدول ، ثاني بارامتر سيكون عبارة عن دالة تأخد   Argument   واحد فقط  ، والهدف من تلك الدالة هو أنشاء أعمدة الجدول .
 أما نوع الحقل ، فيقبل  بارامترين، أول بارامتر هو اسم الحقل ، وثاني بارامتر، هو عدد المحارف كأن نكتب

$users->string('name', 100);

  
و تبقى الدالة down

 
public function down()
            {
                        Schema::drop('users');
            }
 

الدالة  down تقوم بعمل عكس تلك up  ، وذلك ببساطة عبر امرdrop ، والذي لا يتطلب سوى بارامتر واحد وهو اسم الجدول فقط   . ثم نقوم بتنفيذ الامر

 php artisan migrate

تظهر لنا شاشة التاكيد


عند مراجعة قاعدة البيانات  lara   ندخل جدول    users سنجد أن كل الحقول موجودة و نلاحظ وجود حقلين هما created_at 

و updated_at  و هما حقلين نتجا عن استخدام دالة  timestamps. للمزيد من المعلومات عن الدالة   Schema Builde  .

ملاحظات :
  لو رغبنا في التراجع عن آخر عملية تهجير  فإننا نستخدم الأمر :

php artisan migrate:rollback

و يفضل اغلاق الموقع قبل التراجع عن  آخر عملية تهجير باستخدام

php artisan down

ثم التراجع عن آخر عملية تهجير 

php artisan migrate:rollback

ثم إعادة فتح الموقع مرة أخرى

php artisan up

 
وعندها تستطيع فقط التعديل على ملف create_users_table.php كما تريد، ثم تنفيذ هذا الأمر من جديد:

php artisan migrate


وفي حال ما إذا رغبت في التراجع عن جميع عمليات التهجير والرجوع إلى الحالة الأولى لقاعدة البيانات فإننا نستخدم الأمر :

php artisan migrate:reset

هذا ويُمكن أيضا استخدام الأمر التالي لإعادة تنفيذ عمليات التهجير من جديد بشكل مُباشر :

php artisan migrate:refresh


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

php artisan migrate:install

بعض أنواع الحقول


 

تتميز  لارافل   Laravel   بأنها تسمح بإنشاء شتى أنواع الحقول و التي قد تحتاجها في مشروعك , كما انه يسمح بإضافة خصائص للحقول وإعطائها قِيمًا أوليّة. و هذه بعض أنواع الحقول  :

$user->string('name',100);
$user->integer('age')->nullable();
$user->boolean('active')->default(1);
$user->integer('role_id')->unsigned();
$user->text('bio');


والذي يقوم  بإنشاء :
حقل name يكون نصيا يكون أقصر من أو يُساوي 100حرفاً .
حقل age  يكون رقميا، كما أنه يقبل القيمةNULL
حقل  active  يكون منطقيا ويحمل قيمة أولية 1
حقل role_id رقميا ويكون موجبا
حقل bio يكون نصيا
لاحظ أن أنواع الأعمدة فىLaravel     مختلفة عنها فى PHPMyADMIN ، ولمعرفة الأنواع بشكل صحيح، يمكنك مراجعة هذا الرابط .


 

حذف الحقول

ستحتاج إلى حذف الحقول في دالة  down  لحذف حقل email  مثلاً نكتب

Schema::table(‘users’,function($table)
{   $table->dropColumn(‘email’);
});

و قد نستخدم المصفوفة لحذف عدد أكبر من الحقول

Schema::table('users', function($table)
{
    $table->dropColumn(array(‘name’, ‘phone’, 'location'));
});

 

ثالثاً  : تعبئة "بذر" الحقول   database seeding


 

المقصود ببذر حقول قواعد البيانات هو إدخال البيانات الأولية التي نحتاجها لتجربة التطبيق . بالرغم من أن تطبيقك يسمح بإنشاء مُستخدمين جدد فإنك سترغب في استخدام مُستخدمين تجريبيين في كل مرة تُحدث تغييرات في التطبيق ، وإنشاء عدد من المُستخدمين يدويا في كل مرة مضيعة للوقت . الحل يكمن في إعلام Laravel    بالبيانات الأولية التي ترغب في بذر قاعدة البيانات بها بعد إنشائها ويتم ذلك عبر إنشاء ملفات بذر داخل مُجلد app/database/seeds    يحتوي الأوامر التي يجب تنفيذها.

المرحلة الاولى :

نذهب للمجلد    app\database\seeds   سنجد به ملف باسم  DatabaseSeeder.php  . لاحظ الحروف الكبيرة .

 نقوم بفتحه ثم ننشط السطر الاخير بحذف علامتي //  و تعديل الاسم كما بالصورة ثم ننسخ محتواه و نقوم بحفظه . 


تنبيه : إذا كان لدينا أكثر من جدول فعلينا أن تكرر العمل السابق لكل جدول .


المرحلة الثانية

ننشئ فى نفس المجلد ملف جديد باسم جدول قاعدة البيانات  الخاص بنا هكذا  UsersSeeder.php   نلاحظ الحروف الكبيرة . ثم نقوم بالتعديل عليه كما بالصورة

Eloquent::unguard();
                        $seed=[
                                    ['name' => 'Mohamad' , 'pass'=>'111'],
                                    ['name' => 'Ahamad' ,  'pass'=>'222'],
                                    ['name' => 'Ahamad1', 'pass'=>'333'],
                        ];
                        $db=DB::table('users')->insert($seed);

لتنفيذ هذه العملية  نستخدم الأمر التالي في ال composer:

 php artisan db:seed

نلاحظ :

1- استخدمنا  Eloquent::unguard()    من  مكتبة  Eloquent ORM   , و هي مكتبة خاصة للتعامل مع قواعد البيانات .  و سنتعامل معها  - بشكل أوسع-  مع تعاملنا مع الموديل Model  .

2- إذا كان لدينا عدد كبير من الجدول و أردنا عمل بذر لحقول جدول محدد , علينا بالعودة إلى  DatabaseSeeder.php    و التاكد من وضع اسم الجدول المحدد فيه .

3- في حلة الرغبة فى حذف الجداول كلها و إعادة بذرها كلها نستخدم  :
 


php artisan migrate:refresh --seed

 

الموضوع  :  *قواعد البيانات في Laravel* المرجع : استثمر للحياة  investolife 

اعلان تجاري
اعلان 468