symnoob, раньше был merge, но он deprecated, и нужно теперь писать это руками. Берёте весь массив и сравниваете с тем, что были перечислены в вашем запросе, то что не перечислено удаляете.
symnoob, если вы работает через Entity, то никаких там SQL запросов, всё через php и те средства, что даёт доктрина, ака через Collection делаете манипуляции и удаляя или добавляете что нужно.
Так это и есть умное решение, они отказываются от всего, что нарушает принцип Unit of Work.
symnoob, прочитайте документацию. То, о чем вы говорите реализуется с помощью "cascade"={"remove"}
If an Entity of type A contains references to privately owned Entities B then if the reference from A to B is removed the entity B should also be removed, because it is not used anymore.