Forwarded from Pishro App
تو این نسخه، یه ویژگی جدید به نام رابطه "inverse/chaperone" توی Eloquent معرفی شد.
فرض کنید شما یک مدل پست (Post) و یک مدل کامنت (Comment) دارید. رابطه بین این دو مدل به این صورته که هر پست میتونه چندین کامنت داشته باشه.
توی لاراول، معمولاً این رابطه را بصورت زیر تعریف میکنیم:
public function comments(): HasMany
{
return $this->hasMany(Comment::class);
}
حالا با این قابلیت جدید chaperone()، میشه رابطه را اینطور بنویسیم:
public function comments(): HasMany
{
return $this->hasMany(Comment::class)->chaperone('post');
}
با استفاده از chaperone('post')، لاراول بهطور خودکار اطمینان پیدا میکنه که وقتی رابطه کامنتها از دیتابیس لود میشه، هر کامنت به درستی به مدل پست اصلیاش لینک شده باشه.
این کار باعث میشه که کوئریهای اضافه (N+1 Queries) ایجاد نشه و سرعت و کارایی برنامه بهبود پیدا میکنه.
مزایای این متد:
جلوگیری از کوئریهای اضافی (N+1)
لینک خودکار مدل فرزند به مدل والد
حفظ صحیح محدودیتها (Scopes)
#laravel
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1