2017-01-19 14 views
-1

In meinem Programm Ich brauche eine Arbeit Zeitplan wie diese allesequenzielle Auswahl Zeitraum

list of agents

Ich habe eine Liste der Mitarbeiter, die zu erstellen haben eine „Turn-Nummer“, die angeben, welche ein sein wählen soll nach aktuellem

$nextOneTurn= ($currentOneTurn % $CountOfPersonel) +1; 

, so kann ich richtigen wählen (wobei 'Schalten' = $ nextOneTurn) und se t es in der Kalendertabelle für den nächsten Tag

Challenge Wie kann ich mein Programm arrangieren und Datenbank:

1- einzigartig erhalten „Turn-Nummer“

2- Windungszahlen sein sollte (und pflegen immer kontinuierlich) (zB: 1-2-3-4-5)

3-, wenn jemand bearbeiten Personen und zB: change "Jans" Turn bis 3, automatisch auf 1 Daniels Schalten Änderung

4- wenn jemand löscht zB: "pedro", alison's Wechsel automatisch auf 4 umstellen

Ich weiß nicht, ist es richtig, alle Grundsätze in Programmcode festlegen (PHP) oder sollten einige Bedingungen in der Datenbanktabelle

(oder wenn diese Art der Auswahl ist völlig falsch?) Gesetzt

"Turn_number" ist im Code so wichtig. und eine falsche Nummer bringt Desaster.

UPDATE: für Code gefragt

dies Kalender Tabelle

 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(); 
     }); 

und personel Tabelle:

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(); 
    }); 

und Codeinformationen einfügen

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

Ich validate nur Eingabedaten, um etwas zwischen 1-5 (Anzahl der Person) und unique sein.

+0

Also wollen Sie, dass wir Ihre Arbeit machen? –

+0

Ich möchte wissen, ob dieser Ansatz korrekt ist, um nächste Runde zu finden, oder kann ich etwas Besonderes in Mysql setzen Tabelle –

+0

ist es möglich, etwas in MySQL zu tun, um keine Zahlen größer als eine Variable zu akzeptieren –

Antwort

0

i meine Meinung geändert und Problem vollständig ohne

Probleme gelöst

Zuerst fand ich, dass ich eine Validierung jquery Personen während Hinzufügen oder Bearbeiten müssen aus, und müssen auch SQL-Trigger zu überprüfen, ob alle Windungszahlen sind kontinuierlich zu verwenden, oder nicht und wenn es nicht etwas tun, um es kontinuierlich zu machen, und auch einige andere Validierung in HTML-Code und so weiter.

Da aber nur wenige Mitarbeiter in der Liste sind, habe ich die "Turn_number" auf "NextOne_id" umgestellt und einfach direkt angegeben, wer für den nächsten Tag (Shift) arbeiten soll. jetzt bin ich glücklich damit: D