Nextras\Migrations ked pouzijem orm:schema-tool:update z aplikacie, chce dropnut table migrations
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- duskohu
- Člen | 778
Caute, pouzivam Nextras\Migrations a pokusam sa vygenerovat zke mam zmeny
v entitach, ale nevolam to cez konzolu, ale cez aplikaciu. Chcel by som si
tieto zmeny ukladat do migrations. problem je v tom ze mi to ponuka drop
tabulky migrations
, pokial to volam cez konzolu je to ok. Neviete
mi poradit preco sa to takto sprava?
$metadatas = $this->em->getMetadataFactory()->getAllMetadata();
if (!empty($metadatas)) {
$schemaTool = new \Doctrine\ORM\Tools\SchemaTool($this->em);
$sqls = $schemaTool->getUpdateSchemaSql($metadatas, FALSE);
bdump($sqls); //DROP TABLE migrations
}
- duskohu
- Člen | 778
Martk napsal(a):
Zkoušel jsi dát místo FALSE TRUE?
* @param array $classes The classes to consider.
* @param boolean $saveMode True for writing to DB, false for SQL string.
*
* @return array The sequence of SQL statements.
*/
public function getUpdateSchemaSql(array $classes, $saveMode = false)
- Martk
- Člen | 661
Komentáře jsem nečetl, ale když jsem tam dal TRUE, tak mi to vyhodilo sql kód bez dropu ve stringu (žádný update). K přímé aktualizaci db slouží metoda updateSchema.
Mimochodem, když se podívám co dělá proměnná $saveMode, tak tohle:
if ($saveMode) {
return $schemaDiff->toSaveSql($this->platform);
}
// a komentar metody toSaveSql
/**
* The to save sql mode ensures that the following things don't happen:
*
* 1. Tables are deleted
* 2. Sequences are deleted
* 3. Foreign Keys which reference tables that would otherwise be deleted.