I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

أسرار الـ Eloquent ORM اللي هتنقلك لمستوى تاني في لارفيل

أسرار الـ Eloquent ORM اللي هتنقلك لمستوى تاني في لارفيل أكيد مريت باللحظة اللي بتكتب فيها كود طويل وعريض جوه الـ Controller عشان بس تجيب شوية بيانات من الداتا

أسرار الـ Eloquent ORM اللي هتنقلك لمستوى تاني في لارفيل
Reading Count: 100

أسرار الـ Eloquent ORM اللي هتنقلك لمستوى تاني في لارفيل

أكيد مريت باللحظة اللي بتكتب فيها كود طويل وعريض جوه الـ Controller عشان بس تجيب شوية بيانات من الداتا بيز (Database)، وتلاقي نفسك بتكرر نفس الـ Query في أكتر من مكان. الإحساس ده هو "وجع" كل مبرمج لارفيل (Laravel) في بداياته. الحقيقة إن لارفيل موفرة لينا أداة جبارة اسمها Eloquent ORM، بس كتير مننا بيستخدمها في الأساسيات بس، مع إن فيها "خبايا" لو عرفتها هتوفر عليك ساعات من كتابة الكود وتخلي الكود بتاعك أنضف بكتير.

يعني إيه Eloquent ORM وليه لازم نحترفها؟

الـ Eloquent ORM هي طريقة لتمثيل جداول الداتا بيز في شكل كلاسات (Classes) بنسميها Models. الميزة الكبيرة هنا إنك بتتعامل مع الداتا كأنها "أوبجكت" (Object) بدل ما تقعد تكتب SQL بايدك. السر بقى مش في الاستخدام العادي، السر في المميزات اللي بتخلي الكود بتاعك "احترافي" وقابل للصيانة (Maintainable).

قوة الـ Local Scopes: اختصار الـ Queries

تخيل عندك جدول للمقالات (Posts) وعايز دايماً تجيب المقالات "المنشورة" بس. بدل ما تكتب where('status', 'published') في كل Controller، الـ Scopes بتسمحلك تعمل ده في الـ Model نفسه.


// جوا الـ Model بتاع Post
public function scopePublished($query) {
    return $query->where('status', 'published');
}

// في الـ Controller تستخدمها كده:
$posts = Post::published()->get();

لاحظ الجمال! الكود بقى مقروء جداً وكأنك بتتكلم إنجليزي، ولو قررت تغير منطق "المنشورة" دي مستقبلاً، هتعدل في مكان واحد بس.

الـ Accessors والـ Mutators: تظبيط الداتا قبل وبعد

الـ Accessors بتسمحلك تعدل شكل الداتا وهي طالعة من الداتا بيز، والـ Mutators بتعدلها قبل ما تتخزن. مثلاً، لو عايز دايماً اسم المستخدم يبدأ بحرف كبير، مش لازم تعمل ده في كل مكان، الـ Accessor هيقوم بالواجب.


// Accessor عشان تخلي الاسم يبدأ بحرف كبير
public function getFirstNameAttribute($value) {
    return ucfirst($value);
}

// Mutator عشان تعمل هاش للباسورد أوتوماتيك
public function setPasswordAttribute($value) {
    $this->attributes['password'] = bcrypt($value);
}

استخدام الـ Appends والـ Hidden: التحكم في الـ API Responses

لو بتبني API، أكيد مش عايز ترجع كل أعمدة الجدول (زي الـ password أو created_at). تقدر تستخدم مصفوفة $hidden في الـ Model عشان تخفي أعمدة معينة، أو $appends عشان تضيف بيانات مش موجودة أصلاً في الجدول بس عايز تظهرها في الـ JSON.


protected $hidden = ['password', 'remember_token'];
protected $appends = ['full_name'];

public function getFullNameAttribute() {
    return $this->first_name . ' ' . $this->last_name;
}

نصيحة من أخ لمطور واعد

يا بطل، الـ Eloquent مش بس وسيلة لتخزين البيانات، دي لغة تواصل بينك وبين قاعدة البيانات. نصيحتي ليك: ما تكتفيش باللي بتعرفه، افتح الـ Documentation الرسمي للارفيل وخصص وقت كل أسبوع تقرأ عن ميزة جديدة زي الـ (Relationships) المتقدمة أو الـ (Events). البرمجة مش بس إن الكود يشتغل، البرمجة هي إن الكود يكون "جميل" ومفهوم لأي حد يجي وراك. استمر في التطوير، والممارسة هي اللي هتخليك خبير!


Share

Related posts

Apr 21, 2026 • 1 min read
Reading Count: 127
إزاي تتعامل مع رفع الملفات File Uploads في لارافل Laravel باحترافية؟

إزاي تتعامل مع رفع الملفات File Uploads في لارافل Laravel باحترافية؟ مين فينا كمبرمجين ممرش باللحظة...

Apr 21, 2026 • 1 min read
Reading Count: 163
إزاي تأمن الـ API الخاص بيك في لارافيل باستخدام Laravel Sanctum

إزاي تأمن الـ API الخاص بيك في لارافيل باستخدام Laravel Sanctum أهلاً بك يا بطل في درس جديد من دروس...

Apr 21, 2026 • 1 min read
Reading Count: 101
دليلك الشامل لعمل Middleware مخصص في لارافيل Laravel Middleware

دليلك الشامل لعمل Middleware مخصص في لارافيل Laravel Middleware بص يا سيدي، أكيد وأنت بتبني أي مشروع...