Laravel - Оптимальная схема и отношения для процессов с задачами - PullRequest
0 голосов
/ 29 октября 2019

У меня есть приложение, в котором user создает students в базе данных. У пользователя есть несколько задач для выполнения в течение всего процесса создания ученика. Для этой цели я хочу создать список дел / задач, который затем можно было бы назначить различным моделям (выше я привел пример students, но есть и другие модели, которые также имеют такие требования).

Итак, вот что я думаю:

php artisan make:controller --resource BAAdmin\\ProcessController
php artisan make:request ProcessRequest
php artisan make:model Process -m
php artisan make:controller --resource BAAdmin\\ToDoController
php artisan make:request ToDoRequest
php artisan make:model ToDo -m


Schema::create('processes', function (Blueprint $table) {
     $table->bigIncrements('id');
     $table->string('title'); // the name of the process, eg: Student Creation
     $table->timestamps();
});
Schema::create('process_todos', function (Blueprint $table) {
     $table->bigIncrements('id');
     $table->bigInteger('process_id')->unsigned();
     $table->string('process_todo')->nullable; // the actual task to do
     $table->integer('due')->nullable; // how many days in advance to set the due date
     $table->timestamps();
});

Schema::create('student_processes', function (Blueprint $table) {
     $table->bigIncrements('id');
     $table->bigInteger('process_id')->unsigned();
     $table->string('status')->nullable; // eg: awaiting feedback, due, etc
     $table->timestamps();
});
Schema::create('student_process_todos', function (Blueprint $table) {
     $table->bigIncrements('id');
     $table->bigInteger('process_todo_id')->unsigned();
     $table->boolean('complete');
     $table->timestamps();
});

Schema::create('supplier_processes', function (Blueprint $table) {
     $table->bigIncrements('id');
     $table->bigInteger('process_id')->unsigned();
     $table->string('status')->nullable; // eg: awaiting feedback, due, etc
     $table->timestamps();
});
Schema::create('supplier_process_todos', function (Blueprint $table) {
     $table->bigIncrements('id');
     $table->bigInteger('process_todo_id')->unsigned();
     $table->boolean('complete');
     $table->timestamps();
});

Итак, будет «процесс» (например, «Создание ученика»), а затем задачи / задачи для этого процесса (например:Позвоните студенту, выставьте счет студенту, загрузите документ студента). Когда учащегося создают, вы выбираете процесс, и он просматривает все задачи для этого процесса, доступные на тот момент.

Кажется ли это правильным? Я не могу удержаться, но чувствую, что, вероятно, мне следует использовать Полиморфные отношения или использовать совершенно другой подход

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...