У меня есть приложение, в котором 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();
});
Итак, будет «процесс» (например, «Создание ученика»), а затем задачи / задачи для этого процесса (например:Позвоните студенту, выставьте счет студенту, загрузите документ студента). Когда учащегося создают, вы выбираете процесс, и он просматривает все задачи для этого процесса, доступные на тот момент.
Кажется ли это правильным? Я не могу удержаться, но чувствую, что, вероятно, мне следует использовать Полиморфные отношения или использовать совершенно другой подход