php - tag - ¿Es posible cargar accesorios de doctrina sin borrar la base de datos?
title html attribute (3)
Es posible actualizar los datos agregados previamente a la base de datos (que se cargó ejecutando la doctrina app / console: fixtures: load ). Utilicé EntityManager-> createQuery para eso.
Pero todavía me pregunto si hay o habrá alguna oportunidad de hacerlo simplemente ejecutando un comando de la aplicación / consola. Algo parecido a la doctrina app / console: schema: update --force , pero aplicado a los datos en sí.
Por ahora tuve que escribir un montón de código para actualizar y anexar mis datos correctamente. Por ejemplo, para hacer que --append funcione tuve que escribir lo siguiente:
class LoadCategoryData implements FixtureInterface
{
/**
* {@inheritDoc}
*/
public function load(ObjectManager $em)
{
//a category has name and shortcut name (st)
$categories = array (
[0]=> array(''name'' => ''foo'', ''st'' = ''bar''),
...
);
foreach ($categories as $cat) {
$query = $em->createQuery(
"SELECT c
FROM MyBundle:Category c
WHERE c.st = ?1"
)->setParameter(1, $cat[''st''])->getResult();
if (count($query) == 0) {
$c = new Category();
$c->setName($cat[''name'']);
$c->setSt($cat[''st'']);
$em->persist($c);
}
$em->flush();
}
}
}
He definido algunos elementos en la doctrine
.
Cuando intento correr usando esto
php app/console doctrine:fixtures:load
luego me pide que limpie la base de datos.
Es posible cargarlo sin purgar la base de datos.
Recuerdo que Django
tiene fixtures
que se pueden cargar en tablas separadas sin purgar la base de datos existente
Las DoctrineFixtures son agradables para el primer inicio de una base de datos vacía o en desarrollo, pero no en producción.
Eche un vistazo a DoctrineMigrations and symfonys DcotrineMigrationsBundle , esta es una buena y segura forma de migrar su base de datos en producción.
Usa la opción --append
php app/console help doctrine:fixtures:load
Usage:
doctrine:fixtures:load [--fixtures[="..."]] [--append] [--em="..."] [--purge-with-truncate]
Options:
--fixtures The directory or file to load data fixtures from. (multiple values allowed)
--append Append the data fixtures instead of deleting all data from the database first.
--em The entity manager to use for this command.
--purge-with-truncate Purge data by using a database-level TRUNCATE statement