دسته‌بندی مدل‌های الکوئنت در فریم‌ورک لاراول

دسته‌بندی مدل‌های الکوئنت در فریم‌ورک لاراول با پکیج Laravel Categorizableدر اکثر اپلیکیشن های تحت وب دسته‌بندی ها (Categories) نقش مهمی ایفا می‌کنند. در یک بلاگ ساده، یک فروشگاه اینترنتی، یک سیستم آموزشی و حتی سامانه‌های شخصی سازی شده و غیره مفهوم دسته بندی همیشه حظور دارد; مثلا در یک بلاگ، پست‌ها می‌توانند در دسته بندی‌ های خاص خود باشند و همین طور محصولات یک فروشگاه، مقالات آموزشی یک موسسه و ...من پس از بارها پیاده سازی فیچِر دسته بندی‌ها در پروژه های مختلف، به این نتیجه رسیدم که سورس کد این فیچر را به یک پکیج لاراولی تبدیل کنم. در نتیجه پکیجی‌ را به نام Laravel Categorizable منتشر کردم. این پکیج با بهره گیری از روابط چندریختی (Polymorphism) این امکان را به ما می‌دهد که: هر مدلی را که خواستیم دسته بندی کنیم. به عبارت دیگر در یک اپلیکیشن لاراولی می‌توانیم پست‌ها، محصولات، ویدیو‌ها و هر تعداد مدل دیگر که نیاز داریم را براحتی دسته بندی‌ کنیم. با این پکیج همچنین ساخت، به روزرسانی و حذف دسته بندی‌ها به راحتی قابل انجام است. در این نوشته به شرح موارد زیر می‌پردازیم:پیش نیاز‌نصب پکیجساخت و مدیریت دسته بندی هاروش استفاده از پکیج (آماده سازی مدل)بررسی متدهایی که پکیج در اختیار ما می‌گذاردنتیجه گیریپیش نیاز‌نسخه PHP ۷.۲ و یا بالاترنسخه Laravel ۵.۸ و یا بالاتر (کاملا سازگار با لاراول ۶)نصب پکیجابتدا به فولدر اصلی پروژه لاراولی رفته و دستورات زیر را در کامند لاین اجرا کنید.نصب پکیج با کامپوزر:نصب پکیج با کامپوزرانتشار و اجرای مایگریشن:انتشار و اجرای مایگریشنساخت و مدیریت دسته بندی هاپیش از آنکه به شرح چگونگی عملکرد پکیج بپردازیم.. ابتدا به چند دسته بندی اولیه جهت تست نیاز داریم. پکیح Laravel Categorizable برای مدیریت کامل دسته بندی های ساده و تو در تو،‌ خود از پکیج دیگری به نام laravel-nestedset استفاده می‌کند. در زیر طریقه افزودن دسته بندی والد و فرزند و حدف دسته بندی‌ ها مرور شده است، اما این تمام کارآیی های این پکیج نیست و برای مستندات کامل آن می‌توانید به ریپازیتوری گیت‌هاب این پکیج مراجعه کنید.طریقه مدیریت دسته بندی هاروش استفاده از پکیج (آماده سازی مدل)برای آماده سازی مدل، فقط باید از تِرِیت پکیج داخل مدل مورد نظر استفاده کنید:آماده سازی مدل برای استفاده از Laravel Categorizableبه همین سادگی ما قابلیت دسته‌بندی شدن رو به مدلPostاضافه کردیم. با این کار یک سری متد ها که مربوط به این فیچر هستند به مدل ما اضافه میشه; در بخش بعد به معرفی این متد ها می‌پردازیم.بررسی متدهایی که پکیج در اختیار ما می‌گذاردبرای نمایش دادن متد‌ها، ابتدا چند متغیر را مقداردهی می‌کنیم:مقداردهی متغیرهادر کد بالا ما موارد زیر را انجام دادیم: مدل های Post و Category را مورد استفاده قرار می‌دهیمیک پست ثبت شده در سیستم را مقدار دهی می‌کنیم ( از طریق الکوينت، کوئری‌بیلدر و یا Route Model Binding فرقی ندارد )به ۳ روش مختلف دسته‌بندی هایی که ساختیم را در متغیرها مقدار دهی می‌کنیم حال که متغیرها مقدار دهی شده‌اند... برای:افزودن پست به یک دسته بندی:افزودن پست به یک دسته بندیحذف پست از یک دسته‌بندی:حذف پست از یک دسته‌بندیافزودن پست به چند دسته‌بندی:افزودن پست به چند دسته‌بندیحذف پست از تمام دسته‌بندی ها:حذف پست از تمام دسته‌بندی هاهم‌گام سازی دسته‌‌بندی های پست:هم‌گام سازی دسته‌‌بندی های پستبررسی پیوست پست به دسته‌بندی ها:بررسی پیوست پست به دسته‌بندی هالیست دسته‌بندی های پیوست شده به یک پست:لیست دسته‌بندی های پیوست شده به یک پستاین لیست به صورت آرایه‌ای بازگشت داده می‌شود که کلیدهای آن فیلد id دسته بندی و مقادیر آن فیلد name دسته بندی‌ هاست.لیست پست‌های پیوست شده به یک دسته‌بندی:لیست پست‌های پیوست شده به یک دسته‌بندیرابطه چند به چند categories:رابطه چند به چند categoriesنتیجه گیریاین پکیج به گونه ای طراحی شده تا بتونه با مدل‌های الکوئنت در تعامل باشه و هر جا که به دسته بندی ها نیاز بود براحتی قابل پیاده‌سازیه. سورس این پروژه روی گیت‌هاب موجود هست.https://github.com/AliBayat/Laravel-Categorizableو در پایان: چنانچه در اپلیکیشن لاراولی خود نیاز به دسته بندی دارید...نیازی به اختراع مجدد چرخ نیست. به راحتی پکیج را نصب و از آن استفاده کنید.