/** * Does the standard insert. Which is not managed by entity manager. * * @param EntityManager $em * @param object $translation * @throws Translatable\Exception if insert fails * @return void */ private function _insertTranslationRecord(EntityManager $em, $translation) { $translationMetadata = $em->getClassMetadata(get_class($translation)); $data = array(); foreach ($translationMetadata->getReflectionProperties() as $fieldName => $reflProp) { if (!$translationMetadata->isIdentifier($fieldName)) { $data[$translationMetadata->getColumnName($fieldName)] = $reflProp->getValue($translation); } } $table = $translationMetadata->getTableName(); if (!$em->getConnection()->insert($table, $data)) { throw Exception::failedToInsert(); } }