• Doctrine ORM в чём разница между EntityManager->merge() и EntityManager->persist()?

    @Arkemlar
    Bovv правильно всё написал. А вот это не верно:
    тогда значит где-то ранее указано что нужно вписать. голый флаш - не пропишет, ему нужно что-то !

    EntityManager в нормальном случае сам отслеживает все изменения в ранее загруженных из БД объектах. Есть конечно возможность настроить сущность так, чтобы она не следила за изменениями и надо было вручную сообщать доктрине "вот это вот поле изменилось", но это крайне редкий юзкейс и даже в этом случае `merge` здесь не при делах, там иначе это делается. Merge следует использовать когда объект был создан/получен в обход доктрины, но при этом в БД уже есть запись с таким же Id. Таким образом merge() аналогично persist() сообщает доктрине о том, что этот объект нужно отслеживать и сохранять его изменения, при этом во время flush() ранее вызванный persist() порождает операцию insert, а merge() - update.
    Подробнее см. https://www.doctrine-project.org/projects/doctrine...