حمیدرضا
2 سال پیش توسط حمیدرضا مطرح شد
1 پاسخ

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

سلام دوستان، من دو تا جدول توی پایگاه داده ام دارم که با هم دیگه رابطه ی چند به چند دارن جدول اول 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 خام کوئری اجرا میکردم به راحتی میتونستم این کار رو انجام بدم اما الان توی لاراول به مشکل خوردم و نمیدونم که مشکل ساختاریه یا از متود غلطی استفاده میکنم.


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 2 سال پیش مطرح شد
0

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

Page::all()->sections;

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

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

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

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