/** * Run the migrations. * * @return void */ public function up() { Schema::create('cjenovnici', function (Blueprint $table) { $table->increments('id'); $table->string('ime', 50); $table->text('opis')->nullable(); $table->integer('cijena_1_osoba')->unsigned(); $table->integer('cijena_2_osobe')->unsigned(); $table->integer('cijena_3_osobe')->unsigned(); $table->integer('cijena_4_osobe')->unsigned(); $table->integer('cijena_vise_osoba')->unsigned(); $table->integer('instruktor_1_osoba')->unsigned(); $table->integer('instruktor_2_osobe')->unsigned(); $table->integer('instruktor_3_osobe')->unsigned(); $table->integer('instruktor_4_osobe')->unsigned(); $table->integer('instruktor_udio_vise_osoba')->unsigned(); $table->timestamps(); }); //Populate $res = DB::table('cijene')->groupBy('individualno', 'popust', 'minimalno')->get(); $po_osobi = function ($t, $n) { $x = $t->individualno - ($n - 1) * $t->popust; if ($x < $t->minimalno) { return $t->minimalno; } return $x; }; $instruktoru = function ($t, $n) use($po_osobi) { $u = $po_osobi($t, $n) * $n; return $u - Naplata::getSatnicaZaTvrtku($u); }; $i = 0; foreach ($res as $triplet) { $i++; $triplet->cjenovnik_id = Cjenovnik::create(array('ime' => "Cjenovnik {$i}", 'cijena_1_osoba' => $po_osobi($triplet, 1), 'cijena_2_osobe' => $po_osobi($triplet, 2), 'cijena_3_osobe' => $po_osobi($triplet, 3), 'cijena_4_osobe' => $po_osobi($triplet, 4), 'cijena_vise_osoba' => $triplet->minimalno, 'instruktor_1_osoba' => $instruktoru($triplet, 1), 'instruktor_2_osobe' => $instruktoru($triplet, 2), 'instruktor_3_osobe' => $instruktoru($triplet, 3), 'instruktor_4_osobe' => $instruktoru($triplet, 4), 'instruktor_udio_vise_osoba' => 50))->id; } //Populated Schema::create('c_m_p', function (Blueprint $table) { $table->integer('cjenovnik_id')->unsigned()->index(); $table->integer('mjera_id')->unsigned()->index(); $table->integer('predmet_id')->unsigned()->index(); $table->primary(array('mjera_id', 'predmet_id')); }); Schema::table('c_m_p', function (Blueprint $table) { $table->foreign('cjenovnik_id')->references('id')->on('cjenovnici')->onUpdate('cascade')->onDelete('cascade'); $table->foreign('mjera_id')->references('id')->on('mjere')->onUpdate('cascade')->onDelete('cascade'); $table->foreign('predmet_id')->references('id')->on('predmeti')->onUpdate('cascade')->onDelete('cascade'); }); // Populate c_m_p foreach ($res as $triplet) { $relations = DB::table('cijene')->where('individualno', '=', $triplet->individualno)->where('popust', '=', $triplet->popust)->where('minimalno', '=', $triplet->minimalno)->get(); foreach ($relations as $relation) { DB::table('c_m_p')->insert(array('cjenovnik_id' => $triplet->cjenovnik_id, 'mjera_id' => $relation->mjera_id, 'predmet_id' => $relation->predmet_id)); } } // populated c_m_p }