Skip to content

Commit 988b8f3

Browse files
committed
initial steps to handling objects
1 parent 0f353c1 commit 988b8f3

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

src/Symfony/Bundle/DoctrineMigrationsBundle/Command/MigrationsGenerateFromDataFixturesCommand.php

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
use Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper;
2323
use Doctrine\DBAL\Migrations\Configuration\Configuration;
2424
use Symfony\Bundle\DoctrineMigrationsBundle\SQLLogger\FixturesToMigrationSQLLogger;
25+
use Symfony\Bundle\DoctrineMigrationsBundle\Command\DoctrineCommand;
2526

2627
/**
2728
* Command for generating a Doctrine database migration class from a set of fixtures.
@@ -56,13 +57,14 @@ public function execute(InputInterface $input, OutputInterface $output)
5657

5758
DoctrineCommand::setApplicationEntityManager($this->application, $emName);
5859

60+
$configuration = $this->getMigrationConfiguration($input, $output);
61+
DoctrineCommand::configureMigrations($this->application->getKernel()->getContainer(), $configuration);
62+
5963
$emServiceName = sprintf('doctrine.orm.%s_entity_manager', $emName);
6064
$em = $container->get($emServiceName);
6165

6266
$em->getConnection()->getConfiguration()->setSQLLogger($sqlLogger);
6367

64-
$configuration = $this->getMigrationConfiguration($input, $output);
65-
6668
$dirOrFile = $input->getOption('fixtures');
6769
if ($dirOrFile) {
6870
$paths = is_array($dirOrFile) ? $dirOrFile : array($dirOrFile);
@@ -88,10 +90,23 @@ public function execute(InputInterface $input, OutputInterface $output)
8890
$executor->execute($fixtures);
8991

9092
$queries = $sqlLogger->getQueries();
93+
foreach ($queries as $key => $query) {
94+
foreach ($query[1] as $key2 => $param) {
95+
if (is_object($param)) {
96+
if ($param instanceOf \DateTime) {
97+
$queries[$key][1][$key2] = $param->format('Y-m-d\TH:i:s\Z');
98+
} else if (in_array('__toString', get_class_methods($param))) {
99+
$queries[$key][1][$key2] = (string)$param;
100+
} else {
101+
$output->writeln(sprintf(' <comment>></comment> <info>cannot convert object of type %s to a string</info>', get_class($param)));
102+
}
103+
}
104+
}
105+
}
91106

92107
$output->writeln(sprintf(' <comment>></comment> <info>%s queries logged</info>', count($queries)));
93108
foreach ($queries as $query) {
94-
$output->writeln(sprintf(' <comment>-</comment> <info>%s (%s)</info>', $query[0], implode(',', $query[1])));
109+
$output->writeln(sprintf(' <comment>-</comment> <info>%s (parameters? %s)</info>', $query[0], is_array($query[1]) ? 'yes' : 'no'));
95110
}
96111

97112
$version = date('YmdHis');
@@ -110,8 +125,8 @@ private function buildCodeFromSql(Configuration $configuration, array $queries)
110125
if (strpos($query[0], $configuration->getMigrationsTableName()) !== false) {
111126
continue;
112127
}
113-
$code[] = sprintf("\$this->_addSql(\"%s\", %s);", $query[0], var_export($query[1], true));
128+
$code[] = sprintf("\$this->addSql(\"%s\", %s);", $query[0], var_export($query[1], true));
114129
}
115130
return implode("\n", $code);
116131
}
117-
}
132+
}

0 commit comments

Comments
 (0)