/**
  * Seed data ...
  *
  * @param Collection $data
  * @param $env
  * @return array
  */
 public function seed(Collection $data, $env)
 {
     DB::transaction(function () use($env, $data) {
         $data->each(function ($seed) use($env) {
             $class = getFirstKeyArray($seed);
             $batch = self::getRepository()->getNextBatch($env);
             $message = '';
             $classSeeded = str_singular($class) . '_' . $env;
             if (self::isSeed($classSeeded, $env)) {
                 self::updateSeed(self::getSeed($classSeeded, $env)->id, $seed['hash']);
                 $message = sprintf("%s was updated successfully", ucfirst(str_singular($class)));
                 self::rollbackProcessing(array_reverse(array_unique(getModelsSeed($seed))));
             } else {
                 self::getRepository()->addSeed($classSeeded, $seed['hash'], $env, $batch);
                 $message = sprintf("%s was updated successfully", ucfirst(str_singular($class)));
             }
             self::seedProcessing(str_singular($class), null, $seed[$class]);
             self::getCommand()->info($message);
         });
     });
 }
示例#2
0
 function getModelsSeed(array $seed)
 {
     $hash = [];
     foreach ($seed as $key => $val) {
         if (!is_array($val)) {
             continue;
         }
         if (!is_numeric($key)) {
             $hash[] = $key;
         }
         $hash = array_merge($hash, getModelsSeed($val));
     }
     return $hash;
 }