راکت
حل شده

مشکل در many to many realtionship لاراول

1 پاسخ

سلام دوستان، من دو تا جدول توی پایگاه داده ام دارم که با هم دیگه رابطه ی چند به چند دارن جدول اول pages و جدول دوم sections.
این جدوال رو داخل مدل هاشون به هم دیگه متصل کردم.

models/page.php:
public function sections(){
        return $this->belongsToMany(section::class);
    }
models/section.php:
public function pages(){
        return $this->belongsToMany(page::class);
    }

توی controller مربوط به pages زمانی که فقط داده های متصل شده ی یکی از ستر های جدول page از جدول section رو میخوام به شکل زیر دریافت کنم مشکلی ندارم:

$pages = page::find(1)->sections();
dd($pages);

اما زمانی که میخوام توی تعداد سطر بالای یک عدد این دو جدول رو به هم متصل کنم به مشکل میخورم:

$pages = page::all()->sections();
dd($pages);

ممنون میشم اگه توی حل کردن این مشکل بهم کمک کنید، زمانی که با php خام کوئری اجرا میکردم به راحتی میتونستم این کار رو انجام بدم اما الان توی لاراول به مشکل خوردم و نمیدونم که مشکل ساختاریه یا از متود غلطی استفاده میکنم.

ثبت پرسش جدید

پاسخ‌ها

1
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

بهترین پاسخ

درست متوجه نشدم هدف نهاییتون چه چیزی هست ولی کد زیر از نظر منطقی بی معناست:

Page::all()->sections;

چون خروجی Page::all() یک collection هست و معنا نداره که یک رابطه رو روی کالکشن صدا بزنیم.
اگر هدفتون این هست که تمامی صفحات رو همراه با section هاشون دریافت کنید باید از Eager Loading به شکل زیر استفاده کنید:

Page::with(['sections'])->get();

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام