0%
إتقان Eloquent ORM: الدليل الشامل

إتقان Eloquent ORM: الدليل الشامل

دليل شامل لإتقان Eloquent ORM، أداة إدارة قواعد البيانات في Laravel

I

InSkillCoach

· دقيقة

إتقان Eloquent ORM: الدليل الشامل

يُعدّ Eloquent ORM من أقوى مكوّنات Laravel. فهو يبسّط التفاعل مع قاعدة البيانات إلى حدّ كبير، إذ يتيح التعامل مع البيانات ككائنات PHP.

أساسيات Eloquent

إنشاء نموذج

php artisan make:model User -m

بنية النموذج الأساسي

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $fillable = ['name', 'email', 'password'];
    protected $hidden = ['password'];
}

العلاقات في Eloquent

One-to-One

public function profile()
{
    return $this->hasOne(Profile::class);
}

One-to-Many

public function posts()
{
    return $this->hasMany(Post::class);
}

Many-to-Many

public function roles()
{
    return $this->belongsToMany(Role::class);
}

الاستعلامات المتقدمة

تصفية البيانات

// بحث بسيط
User::where('active', true)->get();

// استعلامات معقدة
User::where('age', '>', 18)
    ->whereHas('posts', function($query) {
        $query->where('published', true);
    })
    ->get();

التجميعات

// العدّ
User::count();

// المجموع
Order::sum('total');

// المتوسط
Rating::avg('score');

أفضل الممارسات

1. استخدام النطاقات (Scopes)

public function scopeActive($query)
{
    return $query->where('active', true);
}

// الاستخدام
User::active()->get();

2. دوال الوصول والتعديل (Accessors و Mutators)

// دالة الوصول
public function getFullNameAttribute()
{
    return "{$this->first_name} {$this->last_name}";
}

// دالة التعديل
public function setPasswordAttribute($value)
{
    $this->attributes['password'] = bcrypt($value);
}

3. المجموعات (Collections)

$users = User::all()->filter(function ($user) {
    return $user->posts_count > 3;
})->map(function ($user) {
    return $user->only(['id', 'name', 'email']);
});

تحسين الأداء

1. التحميل المسبق (Eager Loading)

// بدون Eager Loading (مشكلة N+1)
$books = Book::all();
foreach ($books as $book) {
    echo $book->author->name;
}

// مع Eager Loading
$books = Book::with('author')->get();

2. المعالجة على دفعات (Chunking) للبيانات الكبيرة

User::chunk(100, function ($users) {
    foreach ($users as $user) {
        // المعالجة على دفعات
    }
});

الخاتمة

يُعدّ Eloquent ORM أداة قوية تبسّط إدارة قواعد البيانات في Laravel إلى حدّ كبير. ومن خلال إتقان ميزاته، يمكنك بناء تطبيقات أكثر أداءً وأسهل صيانة.

مصادر إضافية

InSkillCoach

نبذة عن InSkillCoach

خبير في التدريب والتقنيات

مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.

الشهادات:

  • AWS Certified Solutions Architect – Professional
  • شهادات Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
1.8k
113

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!