期间的顺序选择

时间:2017-01-19 17:44:12

标签: php mysql

在我的程序中,我需要创建一个工作时间表

我有一份像这样的人员名单

list of agents

每个人都有一个"转数"表示当前一个

之后应该选择哪一个
 $nextOneTurn= ($currentOneTurn % $CountOfPersonel ) +1;

所以我可以选择正确的(其中' Turn' = $ nextOneTurn) 并将其设置在第二天的日历表中

挑战是如何安排我的程序和数据库:

1-变得独一无二"转数#34;

2-转数应该(并保持)始终连续(例如:1-2-3-4-5)

3-如果有人编辑人员,例如:改变" jan""转到3,Daniel将自动转换为1

4-如果有人删除,例如:" pedro" ,alison&#t; s自动将更改变为4

我不知道在程序代码(PHP)中设置所有原则是否正确或者应该在数据库表中设置一些条件

(或者这种选择是完全错误的吗?)

" Turn_number"在代码中如此重要。错误的数字将带来灾难。

更新: 要求代码

这是日历表

      Schema::create('calendars', function (Blueprint $table) {
        $table->increments('id');
        $table->DATE('date');
        $table->integer('seats_id')->unsigned()->index();            
        $table->integer('historys_id')->unsigned()->index();            
        $table->integer('seats_type');            
        $table->integer('positions_id')->unsigned()->index();
        $table->integer('positions_order')->unsigned()->index();            
        $table->integer('locations_id');
        $table->integer('shifts_id');
        $table->integer('people_id')->unsigned()->index();
        $table->boolean('off')->nullable();
        $table->integer('people_id2')->unsigned()->index()->nullable();
        $table->boolean('off2')->nullable();
        $table->time('duration');
        $table->timestamps();
        });

和个人表:

    Schema::create('personel', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->integer('location_id')->unsigned()->index();
        $table->string('raiting');
        $table->integer('point');  
        $table->string('flag')->nullable();
        $table->integer('order');  
        $table->boolean('multi')->nullable();                  
        $table->timestamps();
    });

和将信息插入个人的代码

 $shift = DB::table('personel ')->insert(['name' => $request->name,'raiting'=>$request->raiting,'point'=>$request->point,'flag'=>$request-  >flag,'order'=>$request->order]);

我只是将输入数据验证为1-5(人员数量)之间的东西,并且是独一无二的。

1 个答案:

答案 0 :(得分:0)

我改变主意,问题完全解决,没有问题

首先我发现在添加或编辑人员时我需要一些验证jquery, 并且还需要使用sql触发器检查所有Turn数字是否连续,以及它是否做了什么使其连续,以及Html代码中的其他一些验证等等。

但由于列表中的人员很少,我将“Turn_number”更改为“NextOne_id”,并直接指示谁应该在第二天工作(轮班)。现在我对此很满意:D