setName('migrate:create:import') ->setAliases(array("ik:mg:import")) ->setDescription('Create yaml for import.') ->setHelp('Create yaml from table.') ->addArgument('table', InputArgument::REQUIRED, "Table name to export data.") ->addArgument('file-name', InputArgument::REQUIRED, "Name of the file.") ->addOption("where", null, InputOption::VALUE_OPTIONAL, "Where for sql sentece.", "") ->addOption("action", null, InputOption::VALUE_OPTIONAL, "Action for sql sentencies. Options: INSERT, UPDATE, DELETE, REPLACE, INSERTORUPDATE, INSERTIGNORE", "INSERTORUPDATE"); } protected function execute(InputInterface $input, OutputInterface $output) { $em = $this->getContainer()->get('doctrine')->getManager(); $table = $input->getArgument('table'); $fileName = $input->getArgument('file-name'); $stmt = $em->getConnection()->executeQuery("select * from " . $table . (trim($input->getOption("where")) == '' ? '' : ' where ' . $input->getOption("where"))); if ($stmt->rowCount() > 0) { $result = $stmt->fetchAll(); $str = $input->getOption("action") . ":\n"; $str .= " $table:\n"; foreach ($result as $row) { $first = true; foreach ($row as $key => $value) { $value = str_replace("\\", '\\\\', $value); $value = str_replace('"', '\"', $value); $value = str_replace(array("\n", "\r"), array("\\n", "\\r"), $value); if (trim($value) == "") { // al estar vacio el string, tengo que verificar si el valor es null if (isset($row['id'])) { // existe la columna id para utilizar en el where $stmtNull = $em->getConnection()->executeQuery("select if(isnull(" . $key . "), 1, 0) as valor from " . $table . " where id = " . $row['id']); if ($stmtNull->rowCount() > 0) { $resultNull = $stmtNull->fetchAll(); $value = $resultNull[0]['valor'] == 1 ? "NULL" : ""; } } } if ($first) { $str .= " - $key: \"" . $value . "\"\n"; $first = false; } else { $str .= " $key: \"" . $value . "\"\n"; } } } file_put_contents($fileName, $str); } else { echo "No results"; } } }