لینکهای مفید برای شرکت در مسابقه:
در زمان مسابقه میتوانید سوالهای خود را از قسمت «سؤال بپرسید» مطرح کنید.
امان از ویرایشهای ویکیپدیا!
— حامد
حامد که از محتوای ویکیپدیا بسیار ناراحت و خسته شده، قصد دارد تا آن را به شیوهای که خودش دوست دارد پیادهسازی کند. او میخواهد رفتار تمام کاربرانی که پستی را ویرایش میکنند را زیر نظر داشته باشد و همچنین اطلاعات سازنده و آخرین ویرایشکننده را هم سریعاً بهدست بیاورد.
شما باید برای رسیدن به این هدف به او کمک کنید.
پروژهی اولیه را از این لینک دانلود کنید.
برای اجرای پروژه، باید php
و composer
را از قبل نصب کرده باشید.
composer install
را در پوشهی اصلی پروژه برای نصب نیازمندیها اجرا کنید.php artisan test
استفاده کنید.مایگریشنهای مربوط به پروژه از قبل ایجاد شدهاند. در اولین گام باید ساختار جداول پروژه را مطابق توضیحات زیر تکمیل کنید:
مایگریشن posts
: ستونهای زیر را به مایگریشن جدول posts
اضافه کنید:
نام ستون | نوع | تعریف |
---|---|---|
user_id |
bigInteger |
کلید خارجی به جدول users و ستون id |
title |
string |
عنوان |
body |
text |
بدنه |
created_by |
bigInteger |
آیدی کاربر ایجادکنندهی پست |
updated_by |
bigInteger |
آیدی آخرین کاربر بهروزکنندهی پست |
مایگریشن edits
: ستونهای زیر را به مایگریشن جدول edits
اضافه کنید:
نام ستون | نوع | تعریف |
---|---|---|
user_id |
bigInteger |
کلید خارجی به جدول users و ستون id |
change |
string |
ستون تغییریافته مثلا title |
value |
string |
مقدار جدید |
سپس باید بین این جداول روابط زیر را برقرار کنید:
ساختار نهایی جداول باید بهصورت زیر باشد:
در آخرین گام شما باید امکانی را به این پروژه اضافه کنید که اگر پستی ایجاد شد، مقادیر created_by
و updated_by
این پست با آیدی کاربری که این پست را ایجاد کرده پر شود و اگر پستی آپدیت شد، مقدار updated_by
آن نیز با آیدی کاربری که این پست را آپدیت کرد پر شود. در این حالت که پست آپدیت شد، باید مقدار تغییریافتهی پست را به دست آورده و آن را به جدول ویرایشها اضافه کنید.
برای درک بهتر سؤال، فرض کنید کاربری با آیدی 1
پستی را با عنوان تست
و محتوا تست تست تست
ایجاد کرده. مقادیر created_by
و updated_by
این پست باید با مقدار 1
در دیتابیس وجود داشته باشند. حال فرض کنید کاربری با آیدی 2
عنوان این پست را به test
ویرایش میکند. در این حالت باید مقدار updated_by
این پست به آیدی 2
تغییر کند و همچنین یک سطر به صورت زیر در جدول ویرایشها اضافه شود:
user_id | change | value |
---|---|---|
2 | title | test |
app/Models
و database/migrations
هستید.پس از پیادهسازی موارد خواستهشده، پوشههای app
و database
را زیپ کرده و آپلود کنید.