سلام
من برای بخش کامنتها از polymorphic استفاده می کنم. کامنتهای اصلی به درستی کار می کنن ولی برای نمایش کامنتهای تو در تو اجرا نمیشه و آرایه خالی رو بر می گردونه.
کد زیر رو داخل مدل Comment تعریف کردم.
public function comments()
{
return $this->hasMany(Comment::class, 'parent_id','id');
}
و در کنترلر Articleها با استفاده در ستور زیر در single page اطلاعات رو return می کنم. با اینکه parent_id بیشتر از 0 هست ولی کامنتهای child رو نشون نمیده.
$comments = $article->comments()->where('approved', 1)->where('parent_id', 0)->latest()->with(['comments' => function ($query) {
$query->where('approved', 1)->latest()->get();
}])->get();
میخواستم بدونم ایراد از کجاست؟
به مثال خود داکیونت لاراول مراجعه کنید. دقیقا واسه ساخت سیستم کامنت مثال زده.
https://laravel.com/docs/5.8/eloquent-relationships#one-to-many-polymorphic-relations
کد رو به صورت زیر تغییر بدید و تست کنید:
$comments = $article->comments()->where('approved', 1)->where('parent_id', 0)->latest()->with(['comments' => function ($query) {
$query->where('approved', 1)->latest();
}])->get();
در کوئری بالا ، شما گزینه approved رو ۲ بار چک کردید و همچنین شما دارین کوئری رو درخواست میکنید با parent_id 0 .. چطور انتظار دارید کامنتهای تو در تو که parent_id غیر 0 دارند رو دریافت کنید؟
@ali.bayat
کامنت هایی که پرنت ایدی ۰ دارند خودشون پرنت هستن. به ازای هر پرنت میخواد فرزنداشو لود کنه.
اومده اول پرنت ها رو گرفته بعدش با with چایلدهای هر پرنت رو لود کرده.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟