اخیراً به هوتن تسکی داده شده که باید دیتابیسی پر از جدول با روابط متعدد ایجاد کند. او که از این کار خسته شده، ایدهای به ذهنش رسیده که این فرایند را خودکار کند. برای این کار به هوتن کمک کنید.
جزئیات پروژه
پروژهی اولیه را از این لینک دانلود کنید.
ساختار فایلها
راهاندازی پروژه
برای اجرای پروژه، باید php
و composer
را از قبل نصب کرده باشید.
- ابتدا پروژهی اولیه را دانلود و از حالت فشرده خارج کنید.
- دستور
composer install
را در پوشهی اصلی پروژه برای نصب نیازمندیها اجرا کنید. - برای اجرای تستهای نمونه، میتوانید از دستور
php artisan test
استفاده کنید.
شما باید دستوری را ایجاد کنید تا مدلها و مایگریشنهایی را با جزئیاتی که در ادامه گفته میشود، ایجاد کند.
قالب دستوری که میسازید باید بهصورت زیر باشد:
دستور فوق به این معنی است که باید دو مدل با نامهای MODEL_NAME_1
و MODEL_NAME_2
ایجاد شوند و بین این دو مدل رابطهای از نوع RELATION_TYPE
برقرار شود. مقدار RELATION_TYPE
میتواند یکی از مقادیر 11
، 1n
یا nn
باشد. 11
بهمعنی رابطهی One to One ، 1n
بهمعنی رابطهی One to Many و nn
بهمعنی رابطهی Many to Many است.
مثال
فرض کنید دستور زیر اجرا میشود:
با اجرای دستور فوق، باید فایلهای Author.php
و Book.php
در دایرکتوری app/Models
ایجاد شوند. محتویات فایلهای این دو کلاس باید بهصورت زیر باشد:
محتویات مدلها
همچنین مایگرشنهای مورنیاز مدلها و رابطهشان باید ایجاد شود:
محتویات مایگریشنها
نکتهی مهمی که باید به آن دقت کنید نام روابط در مدلهاست، که باید بهصورت زیر قرار دهید:
- اگر نوع رابطه مفرد به مفرد بود نام رابطه باید بهصورت مفرد کلاس هدف قرار گیرد مثلا فرض کنید بین دو مدل
User
وName
رابطه یکبهیک برقرار است پس نام رابطه در مدلUser
باید برابرname
قرار گیرد. - اگر نوع رابطه مفرد به جمع بود نام رابطه باید بهصورت جمع کلاس هدف قرار گیرد مثل مدلهای
Author
وBook
مثال ذکر شده در همین سوال.
تضمین میشود که در دستور نام مدلها بهصورت صحیح داده میشوند.
نکات
- برای هر رابطه باید مدل و مایگریشن متناسب با نوع رابطه ایجاد شود.
- در نامگذاری جداول، باید از convention لاراول پیروی کنید.
- تمامی این فرایندها باید بهصورت خودکار انجام شود و در داوری، ساخت مدلهای مختلف تست میشود.
- برای ساخت مایگریشنها حتماً به زمان ساخت مایگریشنها دقت کنید تا بهترتیب اجرا شوند.
- شما تنها مجاز به اعمال تغییرات در پوشه
app
و در صورت نیازstubs
هستید.
آنچه باید آپلود کنید
پس از پیادهسازی موارد خواستهشده، پوشهی app
و پوشهی stubs
را (در صورت وجود) زیپ کرده و آپلود کنید.
ارسال پاسخ برای این سؤال