در این سوال قصد داریم برای یک دبستان ، درس افزار هوشمند طراحی کنیم.
البته تنها بخش طراحی ارتباط مدل ها برای Eloquent
، به شما سپرده شده است.
پروژه اولیه
پروژه اولیه را از اینجا دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است:
ocw_initial
├─ app
│ ├─ Console
│ │ └─ Kernel.php
│ ├─ Exceptions
│ │ └─ Handler.php
│ ├─ Http
│ │ ├─ Controllers
│ │ │ ├─ Auth
│ │ │ │ ├─ ForgotPasswordController.php
│ │ │ │ ├─ LoginController.php
│ │ │ │ ├─ RegisterController.php
│ │ │ │ ├─ ResetPasswordController.php
│ │ │ │ └─ VerificationController.php
│ │ │ └─ Controller.php
│ │ ├─ Middleware
│ │ │ ├─ Authenticate.php
│ │ │ ├─ CheckForMaintenanceMode.php
│ │ │ ├─ EncryptCookies.php
│ │ │ ├─ RedirectIfAuthenticated.php
│ │ │ ├─ TrimStrings.php
│ │ │ ├─ TrustProxies.php
│ │ │ └─ VerifyCsrfToken.php
│ │ └─ Kernel.php
│ ├─ Providers
│ │ ├─ AppServiceProvider.php
│ │ ├─ AuthServiceProvider.php
│ │ ├─ BroadcastServiceProvider.php
│ │ ├─ EventServiceProvider.php
│ │ └─ RouteServiceProvider.php
│ ├─ Assignment.php
│ ├─ Classroom.php
│ ├─ Course.php
│ ├─ Grade.php
│ ├─ Score.php
│ ├─ Student.php
│ ├─ Teacher.php
│ └─ User.php
├─ bootstrap
│ ├─ cache
│ └─ app.php
├─ config
│ ├─ app.php
│ ├─ auth.php
│ ├─ broadcasting.php
│ ├─ cache.php
│ ├─ database.php
│ ├─ filesystems.php
│ ├─ hashing.php
│ ├─ logging.php
│ ├─ mail.php
│ ├─ queue.php
│ ├─ services.php
│ ├─ session.php
│ └─ view.php
├─ database
│ ├─ factories
│ │ └─ UserFactory.php
│ ├─ migrations
│ │ ├─ 2014_10_12_000000_create_users_table.php
│ │ ├─ 2014_10_12_100000_create_password_resets_table.php
│ │ ├─ 2018_10_17_210426_create_assignments_table.php
│ │ ├─ 2018_10_17_210433_create_classrooms_table.php
│ │ ├─ 2018_10_17_210438_create_scores_table.php
│ │ ├─ 2018_10_17_210449_create_grades_table.php
│ │ ├─ 2018_10_17_210608_create_students_table.php
│ │ ├─ 2018_10_17_210613_create_teachers_table.php
│ │ ├─ 2018_10_17_212155_create_courses_table.php
│ │ └─ 2018_10_17_214617_create_assignment_student_table.php
│ └─ seeds
│ └─ DatabaseSeeder.php
├─ public
│ ├─ css
│ │ └─ app.css
│ ├─ js
│ │ └─ app.js
│ ├─ svg
│ │ ├─ 403.svg
│ │ ├─ 404.svg
│ │ ├─ 500.svg
│ │ └─ 503.svg
│ ├─ .htaccess
│ ├─ favicon.ico
│ ├─ index.php
│ └─ robots.txt
├─ resources
│ ├─ js
│ │ ├─ components
│ │ │ └─ ExampleComponent.vue
│ │ ├─ app.js
│ │ └─ bootstrap.js
│ ├─ lang
│ │ └─ en
│ │ ├─ auth.php
│ │ ├─ pagination.php
│ │ ├─ passwords.php
│ │ └─ validation.php
│ ├─ sass
│ │ ├─ _variables.scss
│ │ └─ app.scss
│ └─ views
│ └─ welcome.blade.php
├─ routes
│ ├─ api.php
│ ├─ channels.php
│ ├─ console.php
│ └─ web.php
├─ storage
│ ├─ app
│ ├─ framework
│ │ ├─ cache
│ │ ├─ sessions
│ │ ├─ testing
│ │ └─ views
│ └─ logs
├─ tests
│ ├─ CreatesApplication.php
│ └─ TestCase.php
├─ .editorconfig
├─ .env.example
├─ .gitattributes
├─ artisan
├─ composer.json
├─ composer.lock
├─ package.json
├─ phpunit.xml
├─ server.php
└─ webpack.mix.js
جزئیات
مدل ها
Assignment
: تکلیفClassroom
: کلاسCourse
: درسGrade
: پایه تحصیلیScore
: نمرهStudent
: دانش آموزTeacher
: معلم
ارتباطات مدل ها
- هر کلاس یک معلم و هر معلم یک کلاس دارد.
- هر کلاس چندین دانش آموز دارد و هر دانش آموز به یک کلاس اختصاص داده شده است.
- هر کلاس به یک پایه تحصیلی اختصاص داده شده است و هر پایه تحصیلی چند کلاس دارد.
- هر پایه تحصیلی چندین درس دارد و هر درس به یک پایه تحصیلی اختصاص داده شده است.
- هر تکلیف به چندین دانش آموزان اختصاص داده شده و هر دانش آموز نیز چند تکلیف مختص خود دارد.
- هر نمره به یک درس و یک دانش آموز اختصاص داده شده است. همچنین هر دانش آموز چند نمره و هر درس نیز چند نمره دارد.
مثال
یک نمونه از اجرای این مدل ها شکل زیر است:
$grade = Grade::create();
$classroom = $grade->classrooms()->create();
$teacher = $classroom->teacher()->create();
- برای راهنمایی بیشتر می توانید از ستون های ارتباطی موجود در
migration
ها استفاده کنید.
نکات
- شما تنها مجاز به تغییر فایل های
App/Assignment.php
,App/Classroom.php
,App/Course.php
,App/Grade.php
,App/Score.php
,App/Student.php
,App/Teacher.php
هستید، بقیهی تغییرات نادیده گرفته میشوند. - از
migration
ها برای فهمیدن آنچه باید بنویسید کمک بگیرید. - پس از اعمال تغییرات کل پروژه به غیر از پوشهی
vendor
را Zip کرده و ارسال کنید. - نام فایل Zip اهمیتی ندارد.
ارسال پاسخ برای این سؤال