En Doctrine2 puede llamar a la eliminación en un objeto proxy, que no se carga desde la base de datos. Basta con crear un objeto "de prueba", algo así como:
$user = $em->getPartialReference('model\User', array('id' => $id));
$em->remove($user);
No requiere la consulta inicial, pero no estoy muy seguro de si Doctrina todavía lo hace internamente en fush. No lo veo en el SqlLog.
Solo para agregar, creo que este es el comportamiento esperado de cualquier ORM decente. Se trata de objetos y relaciones. Tiene que saber que algo existe antes de eliminarlo. ORM no es solo un generador de consultas . En general, una consulta nativa siempre será más rápida en cualquier ORM. Cualquier ORM agrega una capa de abstracción y lleva tiempo ejecutarla. Es una compensación típica, usted obtiene algunas características sofisticadas y un código limpio, pero pierde algo de rendimiento.
EDIT:
Me alegro de que trabajó para usted. En realidad, me encontré con otro problema, que me hizo darme cuenta de que los proxies y los objetos parciales no son en realidad lo mismo. Los objetos parciales instancian la clase de modelo real y lo llenan con los valores que desea. Después de inicializar un objeto parcial, la carga diferida ya no funciona. Entonces, por ejemplo, si crea un objeto parcial con solo el id, y desea eliminar solo si otro campo de objeto satisface alguna condición, no funcionará, porque ese otro campo siempre será nulo.
Por otro lado, los proxies funcionan con carga lenta y no comparten los problemas que tienen los objetos parciales. Así que me gustaría sugerir fuertemente no utilizar getPartialReference
método, en lugar usted puede hacer algo como:
$user = $em->getReference('model\User', $id);
$em->remove($user);
El método devuelve el objeto getReference
si ya está cargado o un proxy si no lo es. Un proxy puede cargar de forma diferida todos los demás valores si/cuando los necesita. En cuanto a su ejemplo, se comportarán exactamente igual, pero los apoderados seguramente son una mejor forma de hacerlo.
Gracias por la información y la aclaración – Rana