دیتابیس با 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 است.