دیتابیس با Eloquent · ۱۰ دقیقه مطالعه

رابطه‌ها (Relationships)

قدرت واقعی Eloquent در رابطه‌هاست.

یک‌به‌چند

class Course extends Model {
    public function lessons() {
        return $this->hasMany(Lesson::class);
    }
}
class Lesson extends Model {
    public function course() {
        return $this->belongsTo(Course::class);
    }
}

استفاده:

$course->lessons;              // همهٔ درس‌های دوره
$course->lessons()->count();
$lesson->course->title;        // دورهٔ درس

چند‌به‌چند

public function tags() {
    return $this->belongsToMany(Tag::class);
}
$course->tags()->attach($tagId);

یک‌به‌یک و through

$this->hasOne(Profile::class);
$this->hasManyThrough(Lesson::class, Module::class);

مشکل N+1 و راه‌حل

// ❌ کند: برای هر دوره یک کوئری جدا
foreach (Course::all() as $c) { echo $c->lessons->count(); }

// ✅ Eager Loading: همه با یک کوئری
foreach (Course::with('lessons')->get() as $c) { ... }

with() را یاد بگیر — بزرگ‌ترین بهینه‌سازیِ عملکرد در Eloquent است.

برای ثبت پیشرفت و کسب XP وارد شو.

ورود به میدان
→ Eloquent: مدل و CRUD
اعتبارسنجی پیشرفته ←