مشکل در سینگل پیج دوره ها

3 سال پیش توسط Masiht مطرح شد
آفلاین
user-avatar
Masiht ( 3426 تجربه )
3 سال پیش
تخصص : برنامه نویس سمت سرور (php)

لینک کوتاه اشتراک گذاری

0

با سلام و شب بخیر دوستان عزیز !

من یک مقدار گیج شدم . توی دوره فروشگاهی (
@hesammousavi ) من قدم به قدم با حسام جان پیش رفتم ! حالا یک بحش هست که میاد سینگل پیج را فقط برای کامنت ها اکی می کند.

من اونجا از این کد در کنترلر دوره هایم استفاده می کنم :

    public function single(Course $course)
    {
        $course = Course::get()->first();
        $comments = $course->comments()->where('approved', 1)->where('parent_id', 0)->latest()->with('comments')->get();
        return view('Home.course', compact('course', 'comments'));
    }

ایشون از first استفاده نمی کنند ولی من مجبورم چون ارور :

Method Illuminate\Database\Eloquent\Collection::comments does not exist.

خب حالا که این کار رو می کنم مشکل حل می شود و سینگل پیج اکی می شود . ولی یک موردی دارد که خیلی جالبه :

slug ها متفاوت هست و کامنت های هر دوره جدا در اسلاگ خود نمایش داده میشود ولی همه ی عنوان ها و متن دوره ها و... یکی هست !
انگار برید داخل دو دوره راکت و همه چیشون یکی باشد !

{{ $course->title }}

وقتی یاین را وارد می کنم وارد هر اسلاگی می شوم فقط عنوان اولین دوه را بر می گرداند که بنظرم بدلیل first هست . البته برش هم دارم ارور می گیرد !

@viva.mohammadi
@juza666

دوستان اگر راهی بلد هستید بفرمایید!

آفلاین
user-avatar
vahid Mohammadi ( 37202 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

@masiht
سلام شما در کنترلرتون اگر خط زیر رو حذف کنید احتمالا مشکلتون حل میشه

$course = Course::get()->first();
آفلاین
user-avatar
Masiht ( 3426 تجربه )
3 سال پیش
تخصص : برنامه نویس سمت سرور (php)

لینک کوتاه اشتراک گذاری

0

@viva.mohammadi

این رو بر می دارم مهندس هیچی بر نمی گردونه ! خالی خالی
نه عنوان و نه هیچ چیز دیگر

اگر یه کمکی کنید ممنون می شوم چون واقعا گیج شدم !

آفلاین
user-avatar
sajjad ( 9014 تجربه )
3 سال پیش
تخصص : برنامه نویس back end

لینک کوتاه اشتراک گذاری

0

شما میخوای single course رو برگردونی بعد دوباره اومدی اولین مقدار course رو فراخونی میکنه خوب اشتباه هست !! این خط رو بردار

$course = Course::get()->first();

اگر نمایش نمیده خوب مشکل از جای دیگه هست کد هات رو دوباره برسی کن یه سرچ توی گوگل بزنید در مورد route model binding

آفلاین
user-avatar
vahid Mohammadi ( 37202 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

@masiht
دوست خوبم باید چند تا مورد رو بررسی کنید
۱- route ایی که میاد و این کد رو اجرا میکنه باید یکی از course ها رو پاس بده . شما می تونید با return $course قبل از همه کدهاتون توی تابع single() بیبینید چیو برمیگردونه مثلا return $course->id بعد تو ویو بیبنید این مقدار مثلا در یک تکست باکس چیو نشون میده.
۲- اگر course شما در مرحله بالا درست برمیگرده حالا بیاین و return $course->comments()  رو چک کنید.

نکته : اگر با Tinker آشنایی داشته باشید این تستها خیلی راحت در محیط کنسول انجام میشه. در لینک زیر در موردش توضیح داده

https://roocket.ir/articles/training-with-laravel-tinker

باز هم به نتیجه نرسیدین خروجی موارد فوق رو بزارین اینجا با هم حلش کنیم

برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.