/** * 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); }); }); }
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; }