update symfony2 query getrepository getdoctrine generate force delete consultas symfony doctrine2 insert-update createquery

symfony2 - symfony query builder



¿Es posible usar createQueryBuilder para insertar/actualizar? Si no, ¿qué función debo usar? (5)

Verifique la documentación oficial y los documentos del Query Builder .

Por ahora tuve éxito al crear una función que recupera datos de la base de datos usando la función createQueryBuilder de Doctrine.

¿Alguien sabe si existe una función similar para insertar o actualizar la base de datos? ¿O cómo puedo usar createQueryBuilder?


Otra opción que tiene en lugar de utilizar un QueryBuilder, es utilizar Doctrine DBAL preparar y ejecutar funciones. Probablemente no sea tan flexible como usar QueryBuilder, pero para INSERTs en algunas situaciones podría ser útil.

La forma de usarlo es obtener la conexión de la base de datos desde el administrador de la entidad.

$sql = "INSERT INTO table (field1, field2) VALUES (''foo'', ''var'')"; $stmt = $em->getConnection()->prepare($sql); $stmt->bindValue('':invoice'', $invoiceId); $result = $stmt->execute();


Doctrine 2 ORM no admite INSERT través de DQL o el generador de consultas DQL . Para una sintaxis completa, verifique el EBNF de DQL .

Para manejar inserciones en ORM, siempre crea una instancia de una entidad manualmente y la persiste con el administrador de entidades:

$user = new /My/Entity/User(); $entityManager->persist($user); $entityManager->flush();

Solo puede manejar SELECT , UPDATE y DELETE mediante DQL en Doctrine ORM:

  • Seleccionar:

    SELECT u FROM My/Entity/User u WHERE u.id = :userId

  • Actualizar:

    UPDATE My/Entity/User u SET u.status = ''banned'' WHERE u.id = :userId

  • Borrar

    DELETE My/Entity/User u WHERE u.id = :userId

También puede manejar estas operaciones con QueryBuilder:

  • Seleccionar:

$queryBuilder = $entityManager->createQueryBuilder(); $queryBuilder ->select(''u'') ->from(''My/Entity/User'', ''u'') ->where($queryBuilder->expr()->eq(''u.id'', '':userId''));

  • Borrar:

$queryBuilder = $entityManager->createQueryBuilder(); $queryBuilder ->delete(''My/Entity/User'', ''u'') ->where($queryBuilder->expr()->eq(''u.id'', '':userId''));

  • Actualizar:

$queryBuilder = $entityManager->createQueryBuilder(); $queryBuilder ->update(''My/Entity/User'', ''u'') ->set(''u.status'', ''banned'') ->where($queryBuilder->expr()->eq(''u.id'', '':userId''));


usar QueryBuilder para insertar datos no es posible a menos que esté dispuesto a escribir el DQL o SQL. Si está buscando una manera de simplemente insertar datos en su tabla de base de datos, primero debe asegurarse de que los datos se carguen en una clase Entity para la tabla en la que desea insertar sus datos. Por ejemplo $em->persist($entity);


Si usa DBAL queryBuilder, es posible insertarlo.

$qb = $connection->createQueryBuilder();

Para insertar con el queryBuilder es así:

$qb->insert(''MuBundle:MyClass'', ''momc'') ->values (array( ''property1 (id for example)'' => ''?'' ''property2 (name for exmaple)'' => ''?'' )) ->setParameter(0, $id) ->setparameter(1, $name)