Skip to content

Instantly share code, notes, and snippets.

@sr2ds
Created December 28, 2017 21:54
Show Gist options
  • Save sr2ds/a3a101757693db1644956212cf397cf8 to your computer and use it in GitHub Desktop.
Save sr2ds/a3a101757693db1644956212cf397cf8 to your computer and use it in GitHub Desktop.
Php para montar estrutura de Seeds Laravel a partir de um diretorio com TXTs
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<?php
/*
* Este helper entra em todos os arquivos txt do diretorio corrente, abre eles e pega todas as linhas.
* Montando uma estrutura de inserção para uma seeder no Laravel.
* Para ele funcionar bastar inserí-lo dentro do diretorio que contem os .txt e executá-lo no browser.
* A saída da execução (no browser) pode ser copiada direto para o arquivo seeder.
* Nota: O título do arquivo cria uma entrada no banco também, considerando que o seu conteúdo será seus filhos no banco.
* Ex: Administradores.txt -> Criará um comando DB:: com o dado Administradores e criará comandos para cada linha que conter dentro do arquivo, considerando o ID da criação do Pai.
* Usado originalmente para ler Materias com assuntos de cada máteria dentro dos txt
*
*/
$materias = explode('.txt', shell_exec('ls *txt'));
foreach($materias as $m) {
$fname = str_replace(PHP_EOL,'',$m).".txt";
if ($fname != ' '){
echo '<br> // '.$m.'<br>';
echo devolve_cmd_n1($m);
echo '<br>';
$temas = file_get_contents($fname);
foreach(explode(PHP_EOL, $temas) as $t) {
$tema = utf8_encode($t);
echo devolve_cmd_n2($tema, $matter_id);
echo '<br>';
}
echo '<br><br>';
}
}
function devolve_cmd_n1($nome) {
// devolve a chamada DB para o PAI
$nome = limpa_nome($nome);
if ($nome != ''){
return '$matter_id = DB::table("publish_matters")->insertGetId([ "title"=> "'.$nome.'", "users_id" => 1,"created_at" => "2017-12-01 03:44:23" ]);';
}
}
function devolve_cmd_n2($nome) {
// devolve a chamada DB para o filho hasMany
$nome = limpa_nome($nome);
if ($nome != ''){
return 'DB::table("publish_themes")->insert([ "title"=> "'.$nome.'","publish_matters_id" => $matter_id, "users_id" => 1,"created_at" => "2017-12-01 03:44:23" ]);';
}
}
function limpa_nome($nome){
// Remove aspas dos titulos
return str_replace('"', '', $nome);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment