コード例 #1
0
ファイル: Destroyer.php プロジェクト: Big-Shark/Jables
 public function buildLists()
 {
     $model = JablesTableModel::orderBy('id', 'desc')->first();
     if (!$model) {
         return false;
     }
     $data = json_decode($model->data);
     foreach ($data as $table_name => $table_definition) {
         $this->tables[$table_name] = [];
         if (isset($table_definition->foreign)) {
             $this->tables[$table_name] = $table_definition->foreign;
         }
         foreach ($table_definition->fields as $field_name => $field_definition) {
             if (isset($field_definition->foreign)) {
                 $this->tables[$table_name][$field_name] = $field_definition->foreign;
             }
         }
     }
     return true;
 }
コード例 #2
0
ファイル: Runner.php プロジェクト: Big-Shark/Jables
 public function up()
 {
     $creator = function (Blueprint $table, $table_name, $definition, $uniques) {
         foreach ($definition->fields as $name => $field) {
             if ($name === 'timestamps') {
                 $table->timestamps();
             } else {
                 $this->field($table, $name, $field);
                 if (isset($field->foreign)) {
                     $this->foreigns[$table_name][$name] = $field->foreign;
                 }
             }
         }
         foreach ($uniques as $unique) {
             $table->unique($unique);
         }
     };
     $creator->bindTo($this);
     foreach ($this->tables as $name => $definition) {
         $builder = $this->db->getSchemaBuilder();
         $this->foreigns[$name] = [];
         if (isset($definition->foreign)) {
             $this->foreigns[$name] = (array) $definition->foreign;
         }
         $uniques = [];
         if (isset($definition->unique)) {
             $uniques = (array) $definition->unique;
         }
         $builder->create($name, function (Blueprint $table) use($creator, $name, $definition, $uniques) {
             $creator($table, $name, $definition, $uniques);
         });
     }
     $log = new JablesTableModel();
     $log->setConnection($this->db->getName());
     $log->data = json_encode($this->tables);
     $log->save();
 }