💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ محمدجوکار
نکته‌ای در رابطه با بخش related videos در صفحه‌ی videos/show
محمدجوکار حل شده توسط محمدجوکار

سلام و احترام

این نکته‌ی آموزشیه خاااصی نیست و باگ هم نیست چون مطمئنا در ادامه استاد درستش میکنه اما فقط برای اینکه یه توجهی داشته باشیم بهش، بیانش میکنم. 

 

خیلی خلاصه اگه بخوام بگم، نکته‌ای که بهش برخوردم الان و در حین آموزش هم نظرمو جلب کرده بود، اینه که توی صفحه‌ی videos/show ما گفتیم در سمت چپ، related videos نشون داده بشن؛ و تعداد این ویدئوهای مرتبط رو هم در مسیر App\View\Components\RelatedVideos توی بخش construct ده عدد قرار دادیم. 

حالا ما اگه اصلا دهتا ویدئو نداشته باشیم که اونجا به طور رندوم نشون بدیم چی؟ 

دقیقا در این صورت چون ولیدیشنی برای تعداد ویدئوهای درخواستیمون برای قرار گرفتن توی اون بخش قرار ندادیم، با کلیک روی یک ویدئو به جهت دیدن صفحه‌ی مربوط به اون، ارور برمیگرده و میگه فلان تعدا ویدئو برای بخش ویدئوهای مرتبط وجود نداره؛

حالا من نمیدونم، شاید با یه حرکت خیلی ساده توی لاراول این مشکل حل بشه، اما من با یک ولیدیشن ساده در متد relatedVideos در App\Models\Video حلش کردم

کد و باگشو میزارم اگه دوس داشتید استفاده کنید... ❤

screenshot-174-ZICr.png

 

راه حل: 

    public function relatedVideos(int $count = 0)
    {
        $numberOfVideosInDatabase = count(Video::all());
        if ($count > $numberOfVideosInDatabase)
        {
            return $newResult = Video::all()->random($numberOfVideosInDatabase);
        }
        return Video::all()->random($count);
    }

 

همین موضوع در صفحه‌ی index پروژه هم وجود داره. یعنی اگر ما هیچ ویدئویی توی دیتابیسمون نداشته باشیم، با بالا آوردن صفحه‌ی index.blade یا همون صفحه‌ی اصلی ویدئوهامون با ارور مواجه میشیم. چون در کلاس VideoController متد index ما داده‌های دیتابیس رو دریافت کردیم و به صفحه‌ی index فرستادیم. با این وجود در صورتی که داده‌ای برای فرستاده شدن به این صفحه وجود نداشته باشه، یا تعدادش از اون چیزی که ما تنظیم کردیم (۶) کمتر باشه، ارور برمیگردونه مثل تصویر زیر: 

screenshot-173-hHEp.png

 

که البته برای این مشکل، من هنوز کاری نکردم :)

موفق باشید.. 

درود محمد عزیز 

ممنونم از نکته ای که گفتی 

معمولا توی مواقعی که یه همچین مواردی رو داریم و باید یه حداقل هایی توی دیتابیس مون داشته باشیم تا وقتی پروژه رو جای دیگه قصد داشتیم اجرا کنیم به درستی پروژه ران بشه 

توب به همچبن شرایطی میتونیم از seeder‌ها کمک بگیریم 

فرضا توی این سناریو شما میتونی بیای و اطلاعات ۳ ویدیو رو توی seeder قرار بدید (یا میتونید به صورت ارایه خودتون دستی مقدار بدید میتونید توی همون seeder هم از factory استفاده کنید) تا وقتی پروژه ران شد و مایگریشن‌ها به همراه seeder هم اجراشدن دیگه این مشکلی که گفتی به وجود نیاد 

موفق باشی محمد عزیز

محمدرسول اصغری ۳۱ اردیبهشت ۱۴۰۳، ۱۳:۵۱

بله از اون نظر که شما میگید که اکیه؛ باید حداقل‌هایی توی دیتابیس باشه در ابتدا. 

من راسسستش فکر کردم اگه یه روزی این پروژه رو توی گیت‌هابم بزارم و یکی بخواد بدون داشتن دیتابیس هم دانلودش کنه، براش اجرا بشه و اروری دریافت نکنه. 

اینم درسته که میتونه دیتا ایمپورت کنه و بالا بیارتش اما حسسس کردم اگه بدون داشتن دیتا، باز هم پروژه بالا بیاد، حرفه‌ای تره ... 

هرررچند که نمیدونم با این ولیدیشن از نظر پرفورمنس گند زدم یا نه ولی خب باحال بود برام😂

مرسی که توجه کردی

بهترین پاسخ
محمدجوکار ۰۱ خرداد ۱۴۰۳، ۱۲:۱۲

موفق باشید

محمدرسول اصغری ۰۱ خرداد ۱۴۰۳، ۱۶:۴۲