Created
December 28, 2017 21:54
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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