اذهب إلى المحتوى

يوفّر MariaDB نظام إدارة قواعد بيانات مفتوح المصدر أداءً عاليًا وأمانًا متقدمًا ومرونة في الضبط، مما يجعله مثاليًا لتطبيقات الويب القوية خصوصًا عند دمجه مع إطار عمل لارافيل Laravel و PHP المستخدمان على نطاق واسع بين المطورين.

في هذا المقال سنوضح طريقة ربط MariaDB مع لارافيل والمتطلبات اللازمة وخطوات الضبط بالتفصيل، إضافة لاختبار الاتصال بينهما.

قاعدة بيانات MariaDB

هو نظام مفتوح المصدر لإدارة قواعد البيانات العلاقية، وهو فرع من قاعدة بيانات MySQL، حيث توفر ميزات متقدمة مثل تحسين الأداء والأمان والمرونة في الضبط.

يستخدم لغة SQL لإدارة البيانات مع توافق كامل مع MySQL المعروفة والشهيرة بين المطورين، ويتعامل بكفاءة مع العمليات الكبيرة، لذا تناسب مختلف المشاريع من الصغيرة إلى المؤسسية.

مزايا MariaDB

يدعم عدة أنواع من محركات التخزين مثل InnoDB و Spider و Aria، ويقدم كل منها مزايا مختلفة تغطي معظم المتطلبات ما يوفر مرونة أكبر في التعامل مع البيانات.

وتوفر حلولًا للتوسع للتطبيقات التي تحتاج التعامل مع قاعدة البيانات بكثرة وبكميات كبيرة من البيانات مثل Galera والذي يدعم توزيع الحمل على أكثر من قاعدة بيانات وفي خوادم مختلفة ما يحسن الأداء ويخفض زمن الاستجابة، وهذه البنية في التوزيع تتيح توسيع قاعدة البيانات عند الحاجة.

كما توفر مزايا قوية لحماية البيانات وضمان صحتها و الاستيثاق Authentication وتوزيع الصلاحيات Authorization على مستخدمي قاعدة البيانات.

مزايا لارافل في التعامل مع قواعد البيانات

يوفر واجهة واحدة ثابتة للتعامل مع مختلف أنواع قواعد البيانات بما فيها MariaDB، ففي حال كان التطبيق لا يعتمد على مزايا خاصة لقاعدة بيانات من نوع معين، فيمكن بسهولة تغيير نوع قاعدة البيانات من إعدادات لارافل دون الحاجة لتعديلات الشيفرة.

كما يدعم لارافل استخدام مزايا الاستيثاق في قواعد البيانات عند استخدامها، ويوفر مزايا أمان للحماية من هجمات قواعد البيانات مثل هجوم حقن الاستعلامات SQL Injection.

إعداد خادم قاعدة البيانات على منصة Cloudways

قاعدة البيانات مثلها مثل أي برنامج آخر على الويب يجب أن تُشغّل على خادم التطبيق نفسه أو خادم منفصل مع إعداد التطبيق بعنوان خادم قاعدة البيانات ليتمكن من الوصول إليه، سنستخدم منصة Cloudways لإنشاء قاعدة بيانات MariaDB وإتاحتها على الويب.

نبدأ بإنشاء حساب وتسجيل الدخول إلى المنصة، ثم بالنقر على رابط عرض جميع الخوادم View all Servers نختار الخادم الذي نريده.

001 خادم لارافيل

 

بعدها ننتقل لقسم الإعدادات والحزم Settings & Packages من شريط القائمة الأيسر، وننقر على تبويب الحزم Packages، هنا نختار إصدار MariaDB الذي نحتاجه من الخيارات الموجودة، وننقر على حفظ التغييرات Save Changes.

 

002 mariadb مع لارافيل

بذلك يكون لدينا قاعدة بيانات جاهزة مستضافة على المنصة، وسنحتاج إلى نسخ رابط الوصول واسم المستخدم وكلمة السر لقاعدة البيانات التي أنشأناها ليتمكن التطبيق الذي سنعده في الفقرة التالية من التواصل معها واستخدامها.

ربط تطبيق لارافيل مع قاعدة بيانات MariaDB

نبدأ بإنشاء التطبيق من داخل طرفية Terminal جديدة نتأكد من تثبيت أداة إنشاء المشاريع الجديدة Laravel Installer عالميًا على الجهاز باستخدام Composer بتنفيذ الأمر:

composer global require laravel/installer

باستخدام الأداة ننشئ مشروعًا جديدًا بأي اسم نريد باستبدل YourProjectName في الأمر التالي باسم المشروع:

laravel new YourProjectName

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

cd YourProjectName

ضبط الربط مع قاعدة البيانات

لربط لارافل مع أي قاعدة بيانات يجب إعداد بعض القيم ضمن ملف ‎.env الموجود في مجلد الجذر للمشروع، ننسخ بعض تلك القيم من خصائص خادم قاعدة البيانات الذي أعددناه ضمن الفقرة السابقة، وكل تلك القيم تبدأ ب DB_ وهي:

DB_CONNECTION = mysql
DB_HOST = 127.0.0.1
DB_PORT = 3306
DB_DATABASE = your_database_name
DB_USERNAME = your_database_username
DB_PASSWORD = your_database_password

تعريف وإنشاء جداول قاعدة البيانات

يستخدم لارافيل ملفات التهجير لإدارة والتعريف بمخطط قاعدة البيانات، ونبدأ ذلك بإنشاء ملف تهجير ضمن المجلد database/migrations ونموذج ضمن المجلد app/Models لكيان معين مثل Post من خلال تشغيل الأمر التالي:

php artisan make:model Post -m

نعرّف حقول الجدول الجديد كما نحتاج ضمن ملف التهجير والذي سيكون اسمه مشابه للاسم xxxx_xx_xx_create_posts_table.php داخل المجلد database/migrations كما يلي:

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('content');
        $table->timestamps();
    });
}

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

php artisan migrate

إضافة البيانات إلى قاعدة البيانات

يمكن استخدام مولّد البيانات Seeder أو إضافة البيانات يدويًا باستخدام الأمر tinker في artisan والذي يبدأ جلسة صدفة Shell جديدة يمكننا فيها تنفيذ أسطر برمجية باستخدام شيفرة التطبيق بتنفيذ الأمر:

php artisan tinker

نستخدم نموذج المنشورات الذي أنشأناه سابقًا لإنشاء منشور جديد وتعيين قيم الحقول له ثم تسجيله ضمن قاعدة البيانات باستدعاء الدالة ()save وتكرار هذه الخطوات لإنشاء عدة منشورات ثم الخروج من الجلسة بتنفيذ الأمر exit كالتالي:

$post = new App\Models\Post;
$post->title = 'Sample Title';
$post->content = 'Sample Content';
$post->save();
exit;

عرض البيانات عبر التطبيق

ننشئ ملف عرض Blade جديد بالاسم posts.blade.php ضمن المجلد resources/views وفيه سنعرف طريقة عرض محتويات المنشورات بصيغة HTML ليكون الملف كالتالي:

<h1>Posts</h1>

@forelse($posts as $post)
    <div style="border:1px solid #ccc; margin:10px 0; padding:10px;">
        <h2>{{ $post->title }}</h2>
        <p>{{ $post->content }}</p>
        <small>تاريخ المنشور: {{ $post->created_at }}</small>
    </div>
@empty
    <p>لا يوجد منشورات بعد.</p>
@endforelse

ننشئ المتحكم Controller الخاص بالمنشورات بالاسم PostController ضمن المجلد app/HTTP باستخدام الأمر artisan بتنفيذ الأمر التالي:

php artisan make:controller PostController

وضمنه نكتب المنطق البرمجي لجلب المنشورات وعرضها في ملف العرض السابق لتكون شيفرة المتحكم كالتالي:

<?php
namespace App\Http\Controllers;

use App\Models\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    /**
     * دالة عرض المنشورات
     */
    public function index()
    {
        // جلب المنشورات من قاعدة البيانات
        $posts = Post::all();

        // عرض المنشورات في ملف العرض
        return view('posts', compact('posts'));
    }
}

يبقى تعريف الموجّه Route لعرض المنشورات المخزنة ضمن جدول المنشورات ضمن قاعدة البيانات وتعيين المتحكم المقابل لها بإضافة السطر التالي داخل الملف routes/web.php:

Route::get('/posts', 'PostController@index');

نشغل خادم التطبيق ونذهب للرابط http://localhost:8000/posts ضمن المتصفح وسنرى عرض لجميع المنشورات المسجلة في قاعدة البيانات بتنفيذ أمر التشغيل:

php artisan serve

الإصدارات المدعومة من MariaDB

تدعم منصة Cloudways العديد من إصدارات MariaDB، بما في ذلك 10.0 و 10.1 و 10.2 و 10.3 و 10.4 و 10.5 و 10.6، ولكن يجب ملاحظة أن الخوادم الأحدث والخوادم التي تعمل باستخدام توزيعة Debian 10 تأتي مع MariaDB 10.4 افتراضيًا والتالي جدول قابلية الترقية من قاعدة بيانات من نوع MySQL إلى ما يقابلها:

إصدار قاعدة البيانات قابلة للترقية إلى
MySQL 5.5 الإصدارات MariaDB 10.0 و MariaDB 10.1 و MariaDB 10.2 و MariaDB 10.3.
MySQL 5.6 الإصدارات MariaDB 10.1 و MariaDB 10.2 و MariaDB 10.3.
MySQL 5.7 الإصدارات MariaDB 10.2 و MariaDB 10.3.
MariaDB 10.0 الإصدارات MariaDB 10.1 و MariaDB 10.2 و MariaDB 10.3.
MariaDB 10.1 الإصدارات MariaDB 10.2 و MariaDB 10.3.
MariaDB 10.2 الإصدار MariaDB 10.3 والإصدارات الأحدث.
MariaDB 10.3 الإصدار MariaDB 10.4 والإصدارات الأحدث.
MariaDB 10.4 الإصدار MariaDB 10.5 والإصدارات الأحدث.
MariaDB 10.5 الإصدار MariaDB 10.6 والإصدارات الأحدث.
MariaDB 10.6 سيكون من الممكن ترقيته إلى أيّ إصدار جديد من MariaDB عند توفّره على منصة Cloudways.

الخلاصة

رأينا في هذا المقال سهولة ربط قاعدة بيانات MariaDB بتطبيق لارافيل عن طريق تعديل ملف .env في لارافيل لضبط الاتصال وتشغيل عمليات الـتهجير لإنشاء الجداول الأساسية وتعريف البيانات ضمنها، واستخدمنا منصة Cloudways التي توفر خيارًا سهلاً وسريعًا لاستضافة وإعداد قواعد البيانات.

يمنح هذا الدمج مزايا عديدة فهو مرن وسهل الاستخدام والتخصيص وقابل للتوسع في حال أصبح المشروع كبيرًا ويوفر مزايا أمان متقدمة، مما يمكّنك من بناء تطبيقات ويب قوية وموثوقة تلبي احتياجات المشاريع المتنوعة بكفاءة عالية.

ترجمة -وبتصرّف- للقسم How to Connect MariaDB Database to Laravel Application لصاحبه Inshal Ali.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...