تطوير تطبيق إدارة المهام Todo – 2

العم بليغ Eloquent


العم بليغ Eloquent وهو إصطلاحاً مخطط الكائن العلائقي (ORM (object-relational mapper وهو الإفتراضي في لارافيل للربط مابين جداول قاعدة البيانات وتطبيقك ويكون على شكل كائن Object تستخدمه برمجياً كما أي كائن قمت ببناءه في تطبيقك وبالتالي يٌشعرك برفع الكلفة ويُبقيك مركزاً على البرمجة بحد ذاتها.

عادةً كل كائن بليغ Eloquent يرتبط بشكل مباشر بجدول مقابل له في قاعدة البيانات.

وبالتالي دعونا نعرف مهمة Task على أن تكون المخطط العلائقي مع جدول المهام tasks الذي قمنا بإنشاء ملف ترحيل له في الدرس السابق.

وطبعاً يمكننا إستخادم الحرفي Artisan لإنشاء مثل هذا النوع من الملفات، عبر تنفيذ الأمر التالي:

php artisan make:model Task

سيتم إنشاء الملف المطلوب ووضعه في مجلد app ، في الحالة الإفتراضية المودل المُنشئ سيكون فارغاً تماماً، لا يتوجب علينا صراحةً أن نقوم بتعريف Eloquent على الجدول المقابل له في قاعدة البيانات لأنه سيقوم بالإفتراض أن الجدول المطلوب تمت تسميته على حسب اسم المودل ولكن في حالة الجمع (أحد الأمور التي تجعل لارافيل في قمة السهولة) بالتالي في حالتنا نحن اسم المودل هو Task وافتراض إلكونت أن الجدول يحمل اسم tasks

وبالتالي هذا هو شكل مودل الخاص بمهامنا:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Task extends Model {

   //

}

 

سنتعرف بشكل أوسع على كيفية استخدام الموديلات Eloquent Models  عندما نقوم بإضافة مسارات جديدة Routes إلى تطبيقنا/موقعنا.

الروابط/المسارات Routing


الآن نحن مستعدين لإضافة مسارات جديدة لتطبيقنا، الروابط تستخدم للإشارة إلى دالة function موجودة مسبقاً في متحكم Controller أو تستخدم للإشارة على دالة غير معرفة Anonymous function ، في الحالة الإفتراضية جميع روابط لارافيل تكون معرفة داخل الملف app/Http/routes.php 
 الموجود مع كل مشروع جديد.

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

<?php

use App\Task;

use Illuminate\Http\Request;

/**
* Display All Tasks 
*/

Route::get('/', function () {

    //

});

/**
* Add A New Task
*/

Route::post('/task', function (Request $request) {

    //

});


/**
* Delete An Existing Task
*/

Route::delete('/task/{id}', function ($id) {

    //

});

 

عرض الواجهة View


في الخطوة التالية دعونا نملئ الرابط الإفتراضي لموقعنا

laravelme.app/

 نحتاج إلى تصيير قالب HTML  يحتوي على نموذج إدخال مهمة جديدة بالإضافة إلى قائمة تحوي على المهام الحالية المضافة إلى تطبيقنا

في إيطار العمل لارافيل جميع العروض/الواجهات مخزنة في المجلد resources/views

ويمكننا إستخدام الدالة المساعدة view() شكل الشيفرة كالتالي:

Route::get('/', function () {

    return view('tasks');

});

 

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