Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-2387

convert-mapping not working correctly with composite primary keys/foreign keys in 2.4.0-RC1

    Details

    • Type: Bug Bug
    • Status: Awaiting Feedback
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 2.3, 2.3.1, 2.3.2, 2.3.3, 2.3.4
    • Fix Version/s: 2.3.4
    • Component/s: Mapping Drivers
    • Security Level: All
    • Labels:
      None
    • Environment:
      Symfony 2.2.0, MySQL 5.1

      Description

      (Apologies if this is somehow a Symfony-specific issue)

      I updated my application via Composer yesterday, and received Doctrine 2.4.0-RC1. After this update, generating entities has been problematic under certain circumstances.

      Here is an example table in MySQL:

      CREATE TABLE `user_email` (
        `user_id` int(10) unsigned NOT NULL COMMENT 'FK to user',
        `email` varchar(254) NOT NULL,
        `email_datasource` smallint(1) unsigned NOT NULL COMMENT 'FK to datasource_code',
        `insert_date` datetime NOT NULL,
        PRIMARY KEY (`user_id`,`email`,`email_datasource`),
        KEY `FK_UserEmail_DataSourceCode` (`email_datasource`),
        CONSTRAINT `FK_UserEmail_User` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8
      

      In Doctrine 2.3, the mapping works correctly, and you end up with a 3-part primary key, with a user property mapped to the User entity, and a datasourceCode property mapped to the DatasourceCode entity. All good.

      In 2.4, the following error is given: Single id is not allowed on composite primary key in entity UserEmail.

      Removing one of the foreign keys in the table (either to User or DatasourceCode) but keeping the primary key set to all 3 columns allows the mapping to work. But, if you then remove one of the columns from the primary key (say, email_datasource) it fails again.

        Activity

        Hide
        Benjamin Eberlei added a comment - - edited

        Can you provide the full stack trace to the exception please?

        $e->getTraceAsString();
        
        Show
        Benjamin Eberlei added a comment - - edited Can you provide the full stack trace to the exception please? $e->getTraceAsString();
        Hide
        Nicholas Van Dusen added a comment -

        Benjamin, I'm not sure how to get the trace for you, since I'm running from inside the Symfony2 doctrine:mapping:import command line item.

        Show
        Nicholas Van Dusen added a comment - Benjamin, I'm not sure how to get the trace for you, since I'm running from inside the Symfony2 doctrine:mapping:import command line item.
        Hide
        Christophe Coevoet added a comment -

        Use the --verbose option when running the command

        Show
        Christophe Coevoet added a comment - Use the --verbose option when running the command
        Hide
        Nicholas Van Dusen added a comment -

        I was able to get a trace for you:

        #0 /var/www/html/voxrepublic/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php(1571): Doctrine\ORM\Mapping\MappingException::singleIdNotAllowedOnCompositePrimaryKey('UserEmail')
        #1 /var/www/html/voxrepublic/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(422): Doctrine\ORM\Mapping\ClassMetadataInfo->getSingleIdentifierFieldName()
        #2 /var/www/html/voxrepublic/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(136): Doctrine\ORM\Mapping\ClassMetadataFactory->completeIdGeneratorMapping(Object(Doctrine\ORM\Mapping\ClassMetadata))
        #3 /var/www/html/voxrepublic/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(302): Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata(Object(Doctrine\ORM\Mapping\ClassMetadata), NULL, false, Array)
        #4 /var/www/html/voxrepublic/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(212): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata('UserEmail')
        #5 /var/www/html/voxrepublic/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(112): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor('UserEmail')
        #6 /var/www/html/voxrepublic/vendor/doctrine/doctrine-bundle/Doctrine/Bundle/DoctrineBundle/Command/ImportMappingDoctrineCommand.php(108): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getAllMetadata()
        #7 /var/www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php(240): Doctrine\Bundle\DoctrineBundle\Command\ImportMappingDoctrineCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
        #8 /var/www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(195): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
        #9 /var/www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php(78): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
        #10 /var/www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(106): Symfony\Bundle\FrameworkBundle\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
        #11 /var/www/html/voxrepublic/app/console(22): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput))
        #12 {main}
        
        Show
        Nicholas Van Dusen added a comment - I was able to get a trace for you: #0 / var /www/html/voxrepublic/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php(1571): Doctrine\ORM\Mapping\MappingException::singleIdNotAllowedOnCompositePrimaryKey('UserEmail') #1 / var /www/html/voxrepublic/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(422): Doctrine\ORM\Mapping\ClassMetadataInfo->getSingleIdentifierFieldName() #2 / var /www/html/voxrepublic/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(136): Doctrine\ORM\Mapping\ClassMetadataFactory->completeIdGeneratorMapping( Object (Doctrine\ORM\Mapping\ClassMetadata)) #3 / var /www/html/voxrepublic/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(302): Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata( Object (Doctrine\ORM\Mapping\ClassMetadata), NULL, false , Array) #4 / var /www/html/voxrepublic/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(212): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata('UserEmail') #5 / var /www/html/voxrepublic/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(112): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor('UserEmail') #6 / var /www/html/voxrepublic/vendor/doctrine/doctrine-bundle/Doctrine/Bundle/DoctrineBundle/Command/ImportMappingDoctrineCommand.php(108): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getAllMetadata() #7 / var /www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php(240): Doctrine\Bundle\DoctrineBundle\Command\ImportMappingDoctrineCommand->execute( Object (Symfony\Component\Console\Input\ArgvInput), Object (Symfony\Component\Console\Output\ConsoleOutput)) #8 / var /www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(195): Symfony\Component\Console\Command\Command->run( Object (Symfony\Component\Console\Input\ArgvInput), Object (Symfony\Component\Console\Output\ConsoleOutput)) #9 / var /www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php(78): Symfony\Component\Console\Application->doRun( Object (Symfony\Component\Console\Input\ArgvInput), Object (Symfony\Component\Console\Output\ConsoleOutput)) #10 / var /www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(106): Symfony\Bundle\FrameworkBundle\Console\Application->doRun( Object (Symfony\Component\Console\Input\ArgvInput), Object (Symfony\Component\Console\Output\ConsoleOutput)) #11 / var /www/html/voxrepublic/app/console(22): Symfony\Component\Console\Application->run( Object (Symfony\Component\Console\Input\ArgvInput)) #12 {main}
        Hide
        Benjamin Eberlei added a comment -

        The problem is that Doctrine seems to detect that you only have on id field on this entity and then a new function of 2.4 throws this error. I will try to reproduce this with your table. Until then could you show me the var_dump() of the $class variable in Doctrine\ORM\ClassMetadataFactory#completeIdGeneratorMapping()? This would help very much already.

        Show
        Benjamin Eberlei added a comment - The problem is that Doctrine seems to detect that you only have on id field on this entity and then a new function of 2.4 throws this error. I will try to reproduce this with your table. Until then could you show me the var_dump() of the $class variable in Doctrine\ORM\ClassMetadataFactory#completeIdGeneratorMapping()? This would help very much already.
        Hide
        Maximilian Beck added a comment - - edited

        I have the same error when using "doctrine:mapping:import"

        CREATE  TABLE IF NOT EXISTS `dev_Recipe`.`step` (
        
          `recipe_id` INT NOT NULL ,
        
          `step_number` INT NOT NULL ,
        
          `description` TEXT NULL ,
        
          `timer` INT NULL ,
        
          `image` VARCHAR(100) NULL ,
        
          PRIMARY KEY (`recipe_id`, `step_number`) ,
        
          INDEX `recipe_id_idx` (`recipe_id` ASC) ,
        
          INDEX `step_number` (`step_number` ASC) ,
        
          CONSTRAINT `step_recipe_id`
        
            FOREIGN KEY (`recipe_id` )
        
            REFERENCES `dev_Recipe`.`recipe` (`recipe_id` )
        
            ON DELETE NO ACTION
        
            ON UPDATE NO ACTION)
        
        ENGINE = InnoDB;
        Exception trace:
         () at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\MappingException.php:258
         Doctrine\ORM\Mapping\MappingException::singleIdNotAllowedOnCompositePrimaryKey() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataInfo.php:1571
         Doctrine\ORM\Mapping\ClassMetadataInfo->getSingleIdentifierFieldName() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataFactory.php:422
         Doctrine\ORM\Mapping\ClassMetadataFactory->completeIdGeneratorMapping() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataFactory.php:136
         Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata() at \htdocs\SF2\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php:302
         Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata() at \htdocs\SF2\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php:212
         Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor() at \htdocs\SF2\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php:112
         Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getAllMetadata() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Console\Command\ConvertMappingCommand.php:126
         Doctrine\ORM\Tools\Console\Command\ConvertMappingCommand->execute() at \htdocs\SF2\vendor\doctrine\doctrine-bundle\Doctrine\Bundle\DoctrineBundle\Command\Proxy\ConvertMappingDoctrineCommand.php:59
         Doctrine\Bundle\DoctrineBundle\Command\Proxy\ConvertMappingDoctrineCommand->execute() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Component\Console\Command\Command.php:240
         Symfony\Component\Console\Command\Command->run() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:193
         Symfony\Component\Console\Application->doRun() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Console\Application.php:78
         Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:106
         Symfony\Component\Console\Application->run() at \htdocs\SF2\app\console:22

        "var_dump($class);" returns:

        object(Doctrine\ORM\Mapping\ClassMetadata)#470 (36) {
          ["name"]=>
          string(10) "Ingredient"
          ["namespace"]=>
          string(0) ""
          ["rootEntityName"]=>
          string(10) "Ingredient"
          ["customGeneratorDefinition"]=>
          NULL
          ["customRepositoryClassName"]=>
          NULL
          ["isMappedSuperclass"]=>
          bool(false)
          ["parentClasses"]=>
          array(0) {
          }
          ["subClasses"]=>
          array(0) {
          }
          ["namedQueries"]=>
          array(0) {
          }
          ["namedNativeQueries"]=>
          array(0) {
          }
          ["sqlResultSetMappings"]=>
          array(0) {
          }
          ["identifier"]=>
          array(1) {
            [0]=>
            string(12) "ingredientId"
          }
          ["inheritanceType"]=>
          int(1)
          ["generatorType"]=>
          int(1)
          ["fieldMappings"]=>
          array(4) {
            ["ingredientId"]=>
            array(6) {
              ["id"]=>
              bool(true)
              ["fieldName"]=>
              string(12) "ingredientId"
              ["columnName"]=>
              string(13) "ingredient_id"
              ["type"]=>
              string(7) "integer"
              ["unsigned"]=>
              bool(false)
              ["nullable"]=>
              bool(false)
            }
            ["name"]=>
            array(6) {
              ["fieldName"]=>
              string(4) "name"
              ["columnName"]=>
              string(4) "name"
              ["type"]=>
              string(6) "string"
              ["length"]=>
              int(45)
              ["fixed"]=>
              bool(false)
              ["nullable"]=>
              bool(false)
            }
            ["color"]=>
            array(5) {
              ["fieldName"]=>
              string(5) "color"
              ["columnName"]=>
              string(5) "color"
              ["type"]=>
              string(7) "integer"
              ["unsigned"]=>
              bool(false)
              ["nullable"]=>
              bool(false)
            }
            ["img"]=>
            array(6) {
              ["fieldName"]=>
              string(3) "img"
              ["columnName"]=>
              string(3) "img"
              ["type"]=>
              string(6) "string"
              ["length"]=>
              int(45)
              ["fixed"]=>
              bool(false)
              ["nullable"]=>
              bool(true)
            }
          }
          ["fieldNames"]=>
          array(4) {
            ["ingredient_id"]=>
            string(12) "ingredientId"
            ["name"]=>
            string(4) "name"
            ["color"]=>
            string(5) "color"
            ["img"]=>
            string(3) "img"
          }
          ["columnNames"]=>
          array(4) {
            ["ingredientId"]=>
            string(13) "ingredient_id"
            ["name"]=>
            string(4) "name"
            ["color"]=>
            string(5) "color"
            ["img"]=>
            string(3) "img"
          }
          ["discriminatorValue"]=>
          NULL
          ["discriminatorMap"]=>
          array(0) {
          }
          ["discriminatorColumn"]=>
          NULL
          ["table"]=>
          array(1) {
            ["name"]=>
            string(10) "ingredient"
          }
          ["lifecycleCallbacks"]=>
          array(0) {
          }
          ["associationMappings"]=>
          array(1) {
            ["ingredientCategory"]=>
            array(15) {
              ["fieldName"]=>
              string(18) "ingredientCategory"
              ["targetEntity"]=>
              string(18) "IngredientCategory"
              ["mappedBy"]=>
              string(10) "ingredient"
              ["type"]=>
              int(8)
              ["inversedBy"]=>
              NULL
              ["isOwningSide"]=>
              bool(false)
              ["sourceEntity"]=>
              string(10) "Ingredient"
              ["fetch"]=>
              int(2)
              ["cascade"]=>
              array(0) {
              }
              ["isCascadeRemove"]=>
              bool(false)
              ["isCascadePersist"]=>
              bool(false)
              ["isCascadeRefresh"]=>
              bool(false)
              ["isCascadeMerge"]=>
              bool(false)
              ["isCascadeDetach"]=>
              bool(false)
              ["orphanRemoval"]=>
              bool(false)
            }
          }
          ["isIdentifierComposite"]=>
          bool(false)
          ["containsForeignIdentifier"]=>
          bool(false)
          ["idGenerator"]=>
          NULL
          ["sequenceGeneratorDefinition"]=>
          NULL
          ["tableGeneratorDefinition"]=>
          NULL
          ["changeTrackingPolicy"]=>
          int(1)
          ["isVersioned"]=>
          NULL
          ["versionField"]=>
          NULL
          ["reflClass"]=>
          NULL
          ["isReadOnly"]=>
          bool(false)
          ["namingStrategy":protected]=>
          object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
          }
          ["reflFields"]=>
          array(0) {
          }
          ["_prototype":"Doctrine\ORM\Mapping\ClassMetadataInfo":private]=>
          NULL
        }
        object(Doctrine\ORM\Mapping\ClassMetadata)#472 (36) {
          ["name"]=>
          string(18) "IngredientCategory"
          ["namespace"]=>
          string(0) ""
          ["rootEntityName"]=>
          string(18) "IngredientCategory"
          ["customGeneratorDefinition"]=>
          NULL
          ["customRepositoryClassName"]=>
          NULL
          ["isMappedSuperclass"]=>
          bool(false)
          ["parentClasses"]=>
          array(0) {
          }
          ["subClasses"]=>
          array(0) {
          }
          ["namedQueries"]=>
          array(0) {
          }
          ["namedNativeQueries"]=>
          array(0) {
          }
          ["sqlResultSetMappings"]=>
          array(0) {
          }
          ["identifier"]=>
          array(1) {
            [0]=>
            string(2) "id"
          }
          ["inheritanceType"]=>
          int(1)
          ["generatorType"]=>
          int(1)
          ["fieldMappings"]=>
          array(3) {
            ["id"]=>
            array(6) {
              ["id"]=>
              bool(true)
              ["fieldName"]=>
              string(2) "id"
              ["columnName"]=>
              string(2) "id"
              ["type"]=>
              string(7) "integer"
              ["unsigned"]=>
              bool(false)
              ["nullable"]=>
              bool(false)
            }
            ["name"]=>
            array(6) {
              ["fieldName"]=>
              string(4) "name"
              ["columnName"]=>
              string(4) "name"
              ["type"]=>
              string(6) "string"
              ["length"]=>
              int(255)
              ["fixed"]=>
              bool(false)
              ["nullable"]=>
              bool(false)
            }
            ["description"]=>
            array(4) {
              ["fieldName"]=>
              string(11) "description"
              ["columnName"]=>
              string(11) "description"
              ["type"]=>
              string(4) "text"
              ["nullable"]=>
              bool(true)
            }
          }
          ["fieldNames"]=>
          array(3) {
            ["id"]=>
            string(2) "id"
            ["name"]=>
            string(4) "name"
            ["description"]=>
            string(11) "description"
          }
          ["columnNames"]=>
          array(3) {
            ["id"]=>
            string(2) "id"
            ["name"]=>
            string(4) "name"
            ["description"]=>
            string(11) "description"
          }
          ["discriminatorValue"]=>
          NULL
          ["discriminatorMap"]=>
          array(0) {
          }
          ["discriminatorColumn"]=>
          NULL
          ["table"]=>
          array(1) {
            ["name"]=>
            string(19) "ingredient_category"
          }
          ["lifecycleCallbacks"]=>
          array(0) {
          }
          ["associationMappings"]=>
          array(2) {
            ["ingredient"]=>
            array(19) {
              ["fieldName"]=>
              string(10) "ingredient"
              ["targetEntity"]=>
              string(10) "Ingredient"
              ["inversedBy"]=>
              string(18) "ingredientCategory"
              ["joinTable"]=>
              array(3) {
                ["name"]=>
                string(30) "ingredient_category_ingredient"
                ["joinColumns"]=>
                array(1) {
                  [0]=>
                  array(2) {
                    ["name"]=>
                    string(22) "ingredient_category_id"
                    ["referencedColumnName"]=>
                    string(2) "id"
                  }
                }
                ["inverseJoinColumns"]=>
                array(1) {
                  [0]=>
                  array(2) {
                    ["name"]=>
                    string(13) "ingredient_id"
                    ["referencedColumnName"]=>
                    string(13) "ingredient_id"
                  }
                }
              }
              ["type"]=>
              int(8)
              ["mappedBy"]=>
              NULL
              ["isOwningSide"]=>
              bool(true)
              ["sourceEntity"]=>
              string(18) "IngredientCategory"
              ["fetch"]=>
              int(2)
              ["cascade"]=>
              array(0) {
              }
              ["isCascadeRemove"]=>
              bool(false)
              ["isCascadePersist"]=>
              bool(false)
              ["isCascadeRefresh"]=>
              bool(false)
              ["isCascadeMerge"]=>
              bool(false)
              ["isCascadeDetach"]=>
              bool(false)
              ["joinTableColumns"]=>
              array(2) {
                [0]=>
                string(22) "ingredient_category_id"
                [1]=>
                string(13) "ingredient_id"
              }
              ["relationToSourceKeyColumns"]=>
              array(1) {
                ["ingredient_category_id"]=>
                string(2) "id"
              }
              ["relationToTargetKeyColumns"]=>
              array(1) {
                ["ingredient_id"]=>
                string(13) "ingredient_id"
              }
              ["orphanRemoval"]=>
              bool(false)
            }
            ["parent"]=>
            array(19) {
              ["fieldName"]=>
              string(6) "parent"
              ["targetEntity"]=>
              string(18) "IngredientCategory"
              ["joinColumns"]=>
              array(1) {
                [0]=>
                array(2) {
                  ["name"]=>
                  string(9) "parent_id"
                  ["referencedColumnName"]=>
                  string(2) "id"
                }
              }
              ["type"]=>
              int(2)
              ["mappedBy"]=>
              NULL
              ["inversedBy"]=>
              NULL
              ["isOwningSide"]=>
              bool(true)
              ["sourceEntity"]=>
              string(18) "IngredientCategory"
              ["fetch"]=>
              int(2)
              ["cascade"]=>
              array(0) {
              }
              ["isCascadeRemove"]=>
              bool(false)
              ["isCascadePersist"]=>
              bool(false)
              ["isCascadeRefresh"]=>
              bool(false)
              ["isCascadeMerge"]=>
              bool(false)
              ["isCascadeDetach"]=>
              bool(false)
              ["sourceToTargetKeyColumns"]=>
              array(1) {
                ["parent_id"]=>
                string(2) "id"
              }
              ["joinColumnFieldNames"]=>
              array(1) {
                ["parent_id"]=>
                string(9) "parent_id"
              }
              ["targetToSourceKeyColumns"]=>
              array(1) {
                ["id"]=>
                string(9) "parent_id"
              }
              ["orphanRemoval"]=>
              bool(false)
            }
          }
          ["isIdentifierComposite"]=>
          bool(false)
          ["containsForeignIdentifier"]=>
          bool(false)
          ["idGenerator"]=>
          NULL
          ["sequenceGeneratorDefinition"]=>
          NULL
          ["tableGeneratorDefinition"]=>
          NULL
          ["changeTrackingPolicy"]=>
          int(1)
          ["isVersioned"]=>
          NULL
          ["versionField"]=>
          NULL
          ["reflClass"]=>
          NULL
          ["isReadOnly"]=>
          bool(false)
          ["namingStrategy":protected]=>
          object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
          }
          ["reflFields"]=>
          array(0) {
          }
          ["_prototype":"Doctrine\ORM\Mapping\ClassMetadataInfo":private]=>
          NULL
        }
        object(Doctrine\ORM\Mapping\ClassMetadata)#474 (36) {
          ["name"]=>
          string(6) "Recipe"
          ["namespace"]=>
          string(0) ""
          ["rootEntityName"]=>
          string(6) "Recipe"
          ["customGeneratorDefinition"]=>
          NULL
          ["customRepositoryClassName"]=>
          NULL
          ["isMappedSuperclass"]=>
          bool(false)
          ["parentClasses"]=>
          array(0) {
          }
          ["subClasses"]=>
          array(0) {
          }
          ["namedQueries"]=>
          array(0) {
          }
          ["namedNativeQueries"]=>
          array(0) {
          }
          ["sqlResultSetMappings"]=>
          array(0) {
          }
          ["identifier"]=>
          array(1) {
            [0]=>
            string(8) "recipeId"
          }
          ["inheritanceType"]=>
          int(1)
          ["generatorType"]=>
          int(1)
          ["fieldMappings"]=>
          array(3) {
            ["recipeId"]=>
            array(6) {
              ["id"]=>
              bool(true)
              ["fieldName"]=>
              string(8) "recipeId"
              ["columnName"]=>
              string(9) "recipe_id"
              ["type"]=>
              string(7) "integer"
              ["unsigned"]=>
              bool(false)
              ["nullable"]=>
              bool(false)
            }
            ["name"]=>
            array(6) {
              ["fieldName"]=>
              string(4) "name"
              ["columnName"]=>
              string(4) "name"
              ["type"]=>
              string(6) "string"
              ["length"]=>
              int(255)
              ["fixed"]=>
              bool(false)
              ["nullable"]=>
              bool(false)
            }
            ["description"]=>
            array(4) {
              ["fieldName"]=>
              string(11) "description"
              ["columnName"]=>
              string(11) "description"
              ["type"]=>
              string(4) "text"
              ["nullable"]=>
              bool(true)
            }
          }
          ["fieldNames"]=>
          array(3) {
            ["recipe_id"]=>
            string(8) "recipeId"
            ["name"]=>
            string(4) "name"
            ["description"]=>
            string(11) "description"
          }
          ["columnNames"]=>
          array(3) {
            ["recipeId"]=>
            string(9) "recipe_id"
            ["name"]=>
            string(4) "name"
            ["description"]=>
            string(11) "description"
          }
          ["discriminatorValue"]=>
          NULL
          ["discriminatorMap"]=>
          array(0) {
          }
          ["discriminatorColumn"]=>
          NULL
          ["table"]=>
          array(1) {
            ["name"]=>
            string(6) "recipe"
          }
          ["lifecycleCallbacks"]=>
          array(0) {
          }
          ["associationMappings"]=>
          array(2) {
            ["recipeCategory"]=>
            array(15) {
              ["fieldName"]=>
              string(14) "recipeCategory"
              ["targetEntity"]=>
              string(14) "RecipeCategory"
              ["mappedBy"]=>
              string(6) "recipe"
              ["type"]=>
              int(8)
              ["inversedBy"]=>
              NULL
              ["isOwningSide"]=>
              bool(false)
              ["sourceEntity"]=>
              string(6) "Recipe"
              ["fetch"]=>
              int(2)
              ["cascade"]=>
              array(0) {
              }
              ["isCascadeRemove"]=>
              bool(false)
              ["isCascadePersist"]=>
              bool(false)
              ["isCascadeRefresh"]=>
              bool(false)
              ["isCascadeMerge"]=>
              bool(false)
              ["isCascadeDetach"]=>
              bool(false)
              ["orphanRemoval"]=>
              bool(false)
            }
            ["users"]=>
            array(19) {
              ["fieldName"]=>
              string(5) "users"
              ["targetEntity"]=>
              string(5) "Users"
              ["inversedBy"]=>
              string(12) "recipeRecipe"
              ["joinTable"]=>
              array(3) {
                ["name"]=>
                string(13) "users_recipes"
                ["joinColumns"]=>
                array(1) {
                  [0]=>
                  array(2) {
                    ["name"]=>
                    string(16) "recipe_recipe_id"
                    ["referencedColumnName"]=>
                    string(9) "recipe_id"
                  }
                }
                ["inverseJoinColumns"]=>
                array(1) {
                  [0]=>
                  array(2) {
                    ["name"]=>
                    string(8) "users_id"
                    ["referencedColumnName"]=>
                    string(2) "id"
                  }
                }
              }
              ["type"]=>
              int(8)
              ["mappedBy"]=>
              NULL
              ["isOwningSide"]=>
              bool(true)
              ["sourceEntity"]=>
              string(6) "Recipe"
              ["fetch"]=>
              int(2)
              ["cascade"]=>
              array(0) {
              }
              ["isCascadeRemove"]=>
              bool(false)
              ["isCascadePersist"]=>
              bool(false)
              ["isCascadeRefresh"]=>
              bool(false)
              ["isCascadeMerge"]=>
              bool(false)
              ["isCascadeDetach"]=>
              bool(false)
              ["joinTableColumns"]=>
              array(2) {
                [0]=>
                string(16) "recipe_recipe_id"
                [1]=>
                string(8) "users_id"
              }
              ["relationToSourceKeyColumns"]=>
              array(1) {
                ["recipe_recipe_id"]=>
                string(9) "recipe_id"
              }
              ["relationToTargetKeyColumns"]=>
              array(1) {
                ["users_id"]=>
                string(2) "id"
              }
              ["orphanRemoval"]=>
              bool(false)
            }
          }
          ["isIdentifierComposite"]=>
          bool(false)
          ["containsForeignIdentifier"]=>
          bool(false)
          ["idGenerator"]=>
          NULL
          ["sequenceGeneratorDefinition"]=>
          NULL
          ["tableGeneratorDefinition"]=>
          NULL
          ["changeTrackingPolicy"]=>
          int(1)
          ["isVersioned"]=>
          NULL
          ["versionField"]=>
          NULL
          ["reflClass"]=>
          NULL
          ["isReadOnly"]=>
          bool(false)
          ["namingStrategy":protected]=>
          object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
          }
          ["reflFields"]=>
          array(0) {
          }
          ["_prototype":"Doctrine\ORM\Mapping\ClassMetadataInfo":private]=>
          NULL
        }
        object(Doctrine\ORM\Mapping\ClassMetadata)#476 (36) {
          ["name"]=>
          string(14) "RecipeCategory"
          ["namespace"]=>
          string(0) ""
          ["rootEntityName"]=>
          string(14) "RecipeCategory"
          ["customGeneratorDefinition"]=>
          NULL
          ["customRepositoryClassName"]=>
          NULL
          ["isMappedSuperclass"]=>
          bool(false)
          ["parentClasses"]=>
          array(0) {
          }
          ["subClasses"]=>
          array(0) {
          }
          ["namedQueries"]=>
          array(0) {
          }
          ["namedNativeQueries"]=>
          array(0) {
          }
          ["sqlResultSetMappings"]=>
          array(0) {
          }
          ["identifier"]=>
          array(1) {
            [0]=>
            string(2) "id"
          }
          ["inheritanceType"]=>
          int(1)
          ["generatorType"]=>
          int(1)
          ["fieldMappings"]=>
          array(3) {
            ["id"]=>
            array(6) {
              ["id"]=>
              bool(true)
              ["fieldName"]=>
              string(2) "id"
              ["columnName"]=>
              string(2) "id"
              ["type"]=>
              string(7) "integer"
              ["unsigned"]=>
              bool(false)
              ["nullable"]=>
              bool(false)
            }
            ["name"]=>
            array(6) {
              ["fieldName"]=>
              string(4) "name"
              ["columnName"]=>
              string(4) "name"
              ["type"]=>
              string(6) "string"
              ["length"]=>
              int(45)
              ["fixed"]=>
              bool(false)
              ["nullable"]=>
              bool(false)
            }
            ["description"]=>
            array(6) {
              ["fieldName"]=>
              string(11) "description"
              ["columnName"]=>
              string(11) "description"
              ["type"]=>
              string(6) "string"
              ["length"]=>
              int(45)
              ["fixed"]=>
              bool(false)
              ["nullable"]=>
              bool(true)
            }
          }
          ["fieldNames"]=>
          array(3) {
            ["id"]=>
            string(2) "id"
            ["name"]=>
            string(4) "name"
            ["description"]=>
            string(11) "description"
          }
          ["columnNames"]=>
          array(3) {
            ["id"]=>
            string(2) "id"
            ["name"]=>
            string(4) "name"
            ["description"]=>
            string(11) "description"
          }
          ["discriminatorValue"]=>
          NULL
          ["discriminatorMap"]=>
          array(0) {
          }
          ["discriminatorColumn"]=>
          NULL
          ["table"]=>
          array(1) {
            ["name"]=>
            string(15) "recipe_category"
          }
          ["lifecycleCallbacks"]=>
          array(0) {
          }
          ["associationMappings"]=>
          array(2) {
            ["recipe"]=>
            array(19) {
              ["fieldName"]=>
              string(6) "recipe"
              ["targetEntity"]=>
              string(6) "Recipe"
              ["inversedBy"]=>
              string(14) "recipeCategory"
              ["joinTable"]=>
              array(3) {
                ["name"]=>
                string(22) "recipe_category_recipe"
                ["joinColumns"]=>
                array(1) {
                  [0]=>
                  array(2) {
                    ["name"]=>
                    string(18) "recipe_category_id"
                    ["referencedColumnName"]=>
                    string(2) "id"
                  }
                }
                ["inverseJoinColumns"]=>
                array(1) {
                  [0]=>
                  array(2) {
                    ["name"]=>
                    string(9) "recipe_id"
                    ["referencedColumnName"]=>
                    string(9) "recipe_id"
                  }
                }
              }
              ["type"]=>
              int(8)
              ["mappedBy"]=>
              NULL
              ["isOwningSide"]=>
              bool(true)
              ["sourceEntity"]=>
              string(14) "RecipeCategory"
              ["fetch"]=>
              int(2)
              ["cascade"]=>
              array(0) {
              }
              ["isCascadeRemove"]=>
              bool(false)
              ["isCascadePersist"]=>
              bool(false)
              ["isCascadeRefresh"]=>
              bool(false)
              ["isCascadeMerge"]=>
              bool(false)
              ["isCascadeDetach"]=>
              bool(false)
              ["joinTableColumns"]=>
              array(2) {
                [0]=>
                string(18) "recipe_category_id"
                [1]=>
                string(9) "recipe_id"
              }
              ["relationToSourceKeyColumns"]=>
              array(1) {
                ["recipe_category_id"]=>
                string(2) "id"
              }
              ["relationToTargetKeyColumns"]=>
              array(1) {
                ["recipe_id"]=>
                string(9) "recipe_id"
              }
              ["orphanRemoval"]=>
              bool(false)
            }
            ["parent"]=>
            array(19) {
              ["fieldName"]=>
              string(6) "parent"
              ["targetEntity"]=>
              string(14) "RecipeCategory"
              ["joinColumns"]=>
              array(1) {
                [0]=>
                array(2) {
                  ["name"]=>
                  string(9) "parent_id"
                  ["referencedColumnName"]=>
                  string(2) "id"
                }
              }
              ["type"]=>
              int(2)
              ["mappedBy"]=>
              NULL
              ["inversedBy"]=>
              NULL
              ["isOwningSide"]=>
              bool(true)
              ["sourceEntity"]=>
              string(14) "RecipeCategory"
              ["fetch"]=>
              int(2)
              ["cascade"]=>
              array(0) {
              }
              ["isCascadeRemove"]=>
              bool(false)
              ["isCascadePersist"]=>
              bool(false)
              ["isCascadeRefresh"]=>
              bool(false)
              ["isCascadeMerge"]=>
              bool(false)
              ["isCascadeDetach"]=>
              bool(false)
              ["sourceToTargetKeyColumns"]=>
              array(1) {
                ["parent_id"]=>
                string(2) "id"
              }
              ["joinColumnFieldNames"]=>
              array(1) {
                ["parent_id"]=>
                string(9) "parent_id"
              }
              ["targetToSourceKeyColumns"]=>
              array(1) {
                ["id"]=>
                string(9) "parent_id"
              }
              ["orphanRemoval"]=>
              bool(false)
            }
          }
          ["isIdentifierComposite"]=>
          bool(false)
          ["containsForeignIdentifier"]=>
          bool(false)
          ["idGenerator"]=>
          NULL
          ["sequenceGeneratorDefinition"]=>
          NULL
          ["tableGeneratorDefinition"]=>
          NULL
          ["changeTrackingPolicy"]=>
          int(1)
          ["isVersioned"]=>
          NULL
          ["versionField"]=>
          NULL
          ["reflClass"]=>
          NULL
          ["isReadOnly"]=>
          bool(false)
          ["namingStrategy":protected]=>
          object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
          }
          ["reflFields"]=>
          array(0) {
          }
          ["_prototype":"Doctrine\ORM\Mapping\ClassMetadataInfo":private]=>
          NULL
        }
        object(Doctrine\ORM\Mapping\ClassMetadata)#478 (36) {
          ["name"]=>
          string(4) "Step"
          ["namespace"]=>
          string(0) ""
          ["rootEntityName"]=>
          string(4) "Step"
          ["customGeneratorDefinition"]=>
          NULL
          ["customRepositoryClassName"]=>
          NULL
          ["isMappedSuperclass"]=>
          bool(false)
          ["parentClasses"]=>
          array(0) {
          }
          ["subClasses"]=>
          array(0) {
          }
          ["namedQueries"]=>
          array(0) {
          }
          ["namedNativeQueries"]=>
          array(0) {
          }
          ["sqlResultSetMappings"]=>
          array(0) {
          }
          ["identifier"]=>
          array(2) {
            [0]=>
            string(10) "stepNumber"
            [1]=>
            string(6) "recipe"
          }
          ["inheritanceType"]=>
          int(1)
          ["generatorType"]=>
          int(1)
          ["fieldMappings"]=>
          array(4) {
            ["stepNumber"]=>
            array(6) {
              ["id"]=>
              bool(true)
              ["fieldName"]=>
              string(10) "stepNumber"
              ["columnName"]=>
              string(11) "step_number"
              ["type"]=>
              string(7) "integer"
              ["unsigned"]=>
              bool(false)
              ["nullable"]=>
              bool(false)
            }
            ["description"]=>
            array(4) {
              ["fieldName"]=>
              string(11) "description"
              ["columnName"]=>
              string(11) "description"
              ["type"]=>
              string(4) "text"
              ["nullable"]=>
              bool(true)
            }
            ["timer"]=>
            array(5) {
              ["fieldName"]=>
              string(5) "timer"
              ["columnName"]=>
              string(5) "timer"
              ["type"]=>
              string(7) "integer"
              ["unsigned"]=>
              bool(false)
              ["nullable"]=>
              bool(true)
            }
            ["image"]=>
            array(6) {
              ["fieldName"]=>
              string(5) "image"
              ["columnName"]=>
              string(5) "image"
              ["type"]=>
              string(6) "string"
              ["length"]=>
              int(100)
              ["fixed"]=>
              bool(false)
              ["nullable"]=>
              bool(true)
            }
          }
          ["fieldNames"]=>
          array(4) {
            ["step_number"]=>
            string(10) "stepNumber"
            ["description"]=>
            string(11) "description"
            ["timer"]=>
            string(5) "timer"
            ["image"]=>
            string(5) "image"
          }
          ["columnNames"]=>
          array(4) {
            ["stepNumber"]=>
            string(11) "step_number"
            ["description"]=>
            string(11) "description"
            ["timer"]=>
            string(5) "timer"
            ["image"]=>
            string(5) "image"
          }
          ["discriminatorValue"]=>
          NULL
          ["discriminatorMap"]=>
          array(0) {
          }
          ["discriminatorColumn"]=>
          NULL
          ["table"]=>
          array(1) {
            ["name"]=>
            string(4) "step"
          }
          ["lifecycleCallbacks"]=>
          array(0) {
          }
          ["associationMappings"]=>
          array(1) {
            ["recipe"]=>
            array(20) {
              ["fieldName"]=>
              string(6) "recipe"
              ["targetEntity"]=>
              string(6) "Recipe"
              ["id"]=>
              bool(true)
              ["joinColumns"]=>
              array(1) {
                [0]=>
                array(2) {
                  ["name"]=>
                  string(9) "recipe_id"
                  ["referencedColumnName"]=>
                  string(9) "recipe_id"
                }
              }
              ["type"]=>
              int(1)
              ["mappedBy"]=>
              NULL
              ["inversedBy"]=>
              NULL
              ["isOwningSide"]=>
              bool(true)
              ["sourceEntity"]=>
              string(4) "Step"
              ["fetch"]=>
              int(2)
              ["cascade"]=>
              array(0) {
              }
              ["isCascadeRemove"]=>
              bool(false)
              ["isCascadePersist"]=>
              bool(false)
              ["isCascadeRefresh"]=>
              bool(false)
              ["isCascadeMerge"]=>
              bool(false)
              ["isCascadeDetach"]=>
              bool(false)
              ["sourceToTargetKeyColumns"]=>
              array(1) {
                ["recipe_id"]=>
                string(9) "recipe_id"
              }
              ["joinColumnFieldNames"]=>
              array(1) {
                ["recipe_id"]=>
                string(9) "recipe_id"
              }
              ["targetToSourceKeyColumns"]=>
              array(1) {
                ["recipe_id"]=>
                string(9) "recipe_id"
              }
              ["orphanRemoval"]=>
              bool(false)
            }
          }
          ["isIdentifierComposite"]=>
          bool(true)
          ["containsForeignIdentifier"]=>
          bool(true)
          ["idGenerator"]=>
          NULL
          ["sequenceGeneratorDefinition"]=>
          NULL
          ["tableGeneratorDefinition"]=>
          NULL
          ["changeTrackingPolicy"]=>
          int(1)
          ["isVersioned"]=>
          NULL
          ["versionField"]=>
          NULL
          ["reflClass"]=>
          NULL
          ["isReadOnly"]=>
          bool(false)
          ["namingStrategy":protected]=>
          object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
          }
          ["reflFields"]=>
          array(0) {
          }
          ["_prototype":"Doctrine\ORM\Mapping\ClassMetadataInfo":private]=>
          NULL
        }
        Show
        Maximilian Beck added a comment - - edited I have the same error when using "doctrine:mapping:import" CREATE TABLE IF NOT EXISTS `dev_Recipe`.`step` ( `recipe_id` INT NOT NULL , `step_number` INT NOT NULL , `description` TEXT NULL , `timer` INT NULL , `image` VARCHAR(100) NULL , PRIMARY KEY (`recipe_id`, `step_number`) , INDEX `recipe_id_idx` (`recipe_id` ASC) , INDEX `step_number` (`step_number` ASC) , CONSTRAINT `step_recipe_id` FOREIGN KEY (`recipe_id` ) REFERENCES `dev_Recipe`.`recipe` (`recipe_id` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; Exception trace: () at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\MappingException.php:258 Doctrine\ORM\Mapping\MappingException::singleIdNotAllowedOnCompositePrimaryKey() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataInfo.php:1571 Doctrine\ORM\Mapping\ClassMetadataInfo->getSingleIdentifierFieldName() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataFactory.php:422 Doctrine\ORM\Mapping\ClassMetadataFactory->completeIdGeneratorMapping() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataFactory.php:136 Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata() at \htdocs\SF2\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php:302 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata() at \htdocs\SF2\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php:212 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor() at \htdocs\SF2\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php:112 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getAllMetadata() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Console\Command\ConvertMappingCommand.php:126 Doctrine\ORM\Tools\Console\Command\ConvertMappingCommand->execute() at \htdocs\SF2\vendor\doctrine\doctrine-bundle\Doctrine\Bundle\DoctrineBundle\Command\Proxy\ConvertMappingDoctrineCommand.php:59 Doctrine\Bundle\DoctrineBundle\Command\Proxy\ConvertMappingDoctrineCommand->execute() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Component\Console\Command\Command.php:240 Symfony\Component\Console\Command\Command->run() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:193 Symfony\Component\Console\Application->doRun() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Console\Application.php:78 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:106 Symfony\Component\Console\Application->run() at \htdocs\SF2\app\console:22 "var_dump($class);" returns: object(Doctrine\ORM\Mapping\ClassMetadata)#470 (36) { [ "name" ]=> string(10) "Ingredient" [ "namespace" ]=> string(0) "" [ "rootEntityName" ]=> string(10) "Ingredient" [ "customGeneratorDefinition" ]=> NULL [ "customRepositoryClassName" ]=> NULL [ "isMappedSuperclass" ]=> bool( false ) [ "parentClasses" ]=> array(0) { } [ "subClasses" ]=> array(0) { } [ "namedQueries" ]=> array(0) { } [ "namedNativeQueries" ]=> array(0) { } [ "sqlResultSetMappings" ]=> array(0) { } [ "identifier" ]=> array(1) { [0]=> string(12) "ingredientId" } [ "inheritanceType" ]=> int (1) [ "generatorType" ]=> int (1) [ "fieldMappings" ]=> array(4) { [ "ingredientId" ]=> array(6) { [ "id" ]=> bool( true ) [ "fieldName" ]=> string(12) "ingredientId" [ "columnName" ]=> string(13) "ingredient_id" [ "type" ]=> string(7) "integer" [ "unsigned" ]=> bool( false ) [ "nullable" ]=> bool( false ) } [ "name" ]=> array(6) { [ "fieldName" ]=> string(4) "name" [ "columnName" ]=> string(4) "name" [ "type" ]=> string(6) "string" [ "length" ]=> int (45) [ "fixed" ]=> bool( false ) [ "nullable" ]=> bool( false ) } [ "color" ]=> array(5) { [ "fieldName" ]=> string(5) "color" [ "columnName" ]=> string(5) "color" [ "type" ]=> string(7) "integer" [ "unsigned" ]=> bool( false ) [ "nullable" ]=> bool( false ) } [ "img" ]=> array(6) { [ "fieldName" ]=> string(3) "img" [ "columnName" ]=> string(3) "img" [ "type" ]=> string(6) "string" [ "length" ]=> int (45) [ "fixed" ]=> bool( false ) [ "nullable" ]=> bool( true ) } } [ "fieldNames" ]=> array(4) { [ "ingredient_id" ]=> string(12) "ingredientId" [ "name" ]=> string(4) "name" [ "color" ]=> string(5) "color" [ "img" ]=> string(3) "img" } [ "columnNames" ]=> array(4) { [ "ingredientId" ]=> string(13) "ingredient_id" [ "name" ]=> string(4) "name" [ "color" ]=> string(5) "color" [ "img" ]=> string(3) "img" } [ "discriminatorValue" ]=> NULL [ "discriminatorMap" ]=> array(0) { } [ "discriminatorColumn" ]=> NULL [ "table" ]=> array(1) { [ "name" ]=> string(10) "ingredient" } [ "lifecycleCallbacks" ]=> array(0) { } [ "associationMappings" ]=> array(1) { [ "ingredientCategory" ]=> array(15) { [ "fieldName" ]=> string(18) "ingredientCategory" [ "targetEntity" ]=> string(18) "IngredientCategory" [ "mappedBy" ]=> string(10) "ingredient" [ "type" ]=> int (8) [ "inversedBy" ]=> NULL [ "isOwningSide" ]=> bool( false ) [ "sourceEntity" ]=> string(10) "Ingredient" [ "fetch" ]=> int (2) [ "cascade" ]=> array(0) { } [ "isCascadeRemove" ]=> bool( false ) [ "isCascadePersist" ]=> bool( false ) [ "isCascadeRefresh" ]=> bool( false ) [ "isCascadeMerge" ]=> bool( false ) [ "isCascadeDetach" ]=> bool( false ) [ "orphanRemoval" ]=> bool( false ) } } [ "isIdentifierComposite" ]=> bool( false ) [ "containsForeignIdentifier" ]=> bool( false ) [ "idGenerator" ]=> NULL [ "sequenceGeneratorDefinition" ]=> NULL [ "tableGeneratorDefinition" ]=> NULL [ "changeTrackingPolicy" ]=> int (1) [ "isVersioned" ]=> NULL [ "versionField" ]=> NULL [ "reflClass" ]=> NULL [ "isReadOnly" ]=> bool( false ) [ "namingStrategy" : protected ]=> object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) { } [ "reflFields" ]=> array(0) { } [ "_prototype" : "Doctrine\ORM\Mapping\ClassMetadataInfo" : private ]=> NULL } object(Doctrine\ORM\Mapping\ClassMetadata)#472 (36) { [ "name" ]=> string(18) "IngredientCategory" [ "namespace" ]=> string(0) "" [ "rootEntityName" ]=> string(18) "IngredientCategory" [ "customGeneratorDefinition" ]=> NULL [ "customRepositoryClassName" ]=> NULL [ "isMappedSuperclass" ]=> bool( false ) [ "parentClasses" ]=> array(0) { } [ "subClasses" ]=> array(0) { } [ "namedQueries" ]=> array(0) { } [ "namedNativeQueries" ]=> array(0) { } [ "sqlResultSetMappings" ]=> array(0) { } [ "identifier" ]=> array(1) { [0]=> string(2) "id" } [ "inheritanceType" ]=> int (1) [ "generatorType" ]=> int (1) [ "fieldMappings" ]=> array(3) { [ "id" ]=> array(6) { [ "id" ]=> bool( true ) [ "fieldName" ]=> string(2) "id" [ "columnName" ]=> string(2) "id" [ "type" ]=> string(7) "integer" [ "unsigned" ]=> bool( false ) [ "nullable" ]=> bool( false ) } [ "name" ]=> array(6) { [ "fieldName" ]=> string(4) "name" [ "columnName" ]=> string(4) "name" [ "type" ]=> string(6) "string" [ "length" ]=> int (255) [ "fixed" ]=> bool( false ) [ "nullable" ]=> bool( false ) } [ "description" ]=> array(4) { [ "fieldName" ]=> string(11) "description" [ "columnName" ]=> string(11) "description" [ "type" ]=> string(4) "text" [ "nullable" ]=> bool( true ) } } [ "fieldNames" ]=> array(3) { [ "id" ]=> string(2) "id" [ "name" ]=> string(4) "name" [ "description" ]=> string(11) "description" } [ "columnNames" ]=> array(3) { [ "id" ]=> string(2) "id" [ "name" ]=> string(4) "name" [ "description" ]=> string(11) "description" } [ "discriminatorValue" ]=> NULL [ "discriminatorMap" ]=> array(0) { } [ "discriminatorColumn" ]=> NULL [ "table" ]=> array(1) { [ "name" ]=> string(19) "ingredient_category" } [ "lifecycleCallbacks" ]=> array(0) { } [ "associationMappings" ]=> array(2) { [ "ingredient" ]=> array(19) { [ "fieldName" ]=> string(10) "ingredient" [ "targetEntity" ]=> string(10) "Ingredient" [ "inversedBy" ]=> string(18) "ingredientCategory" [ "joinTable" ]=> array(3) { [ "name" ]=> string(30) "ingredient_category_ingredient" [ "joinColumns" ]=> array(1) { [0]=> array(2) { [ "name" ]=> string(22) "ingredient_category_id" [ "referencedColumnName" ]=> string(2) "id" } } [ "inverseJoinColumns" ]=> array(1) { [0]=> array(2) { [ "name" ]=> string(13) "ingredient_id" [ "referencedColumnName" ]=> string(13) "ingredient_id" } } } [ "type" ]=> int (8) [ "mappedBy" ]=> NULL [ "isOwningSide" ]=> bool( true ) [ "sourceEntity" ]=> string(18) "IngredientCategory" [ "fetch" ]=> int (2) [ "cascade" ]=> array(0) { } [ "isCascadeRemove" ]=> bool( false ) [ "isCascadePersist" ]=> bool( false ) [ "isCascadeRefresh" ]=> bool( false ) [ "isCascadeMerge" ]=> bool( false ) [ "isCascadeDetach" ]=> bool( false ) [ "joinTableColumns" ]=> array(2) { [0]=> string(22) "ingredient_category_id" [1]=> string(13) "ingredient_id" } [ "relationToSourceKeyColumns" ]=> array(1) { [ "ingredient_category_id" ]=> string(2) "id" } [ "relationToTargetKeyColumns" ]=> array(1) { [ "ingredient_id" ]=> string(13) "ingredient_id" } [ "orphanRemoval" ]=> bool( false ) } [ "parent" ]=> array(19) { [ "fieldName" ]=> string(6) "parent" [ "targetEntity" ]=> string(18) "IngredientCategory" [ "joinColumns" ]=> array(1) { [0]=> array(2) { [ "name" ]=> string(9) "parent_id" [ "referencedColumnName" ]=> string(2) "id" } } [ "type" ]=> int (2) [ "mappedBy" ]=> NULL [ "inversedBy" ]=> NULL [ "isOwningSide" ]=> bool( true ) [ "sourceEntity" ]=> string(18) "IngredientCategory" [ "fetch" ]=> int (2) [ "cascade" ]=> array(0) { } [ "isCascadeRemove" ]=> bool( false ) [ "isCascadePersist" ]=> bool( false ) [ "isCascadeRefresh" ]=> bool( false ) [ "isCascadeMerge" ]=> bool( false ) [ "isCascadeDetach" ]=> bool( false ) [ "sourceToTargetKeyColumns" ]=> array(1) { [ "parent_id" ]=> string(2) "id" } [ "joinColumnFieldNames" ]=> array(1) { [ "parent_id" ]=> string(9) "parent_id" } [ "targetToSourceKeyColumns" ]=> array(1) { [ "id" ]=> string(9) "parent_id" } [ "orphanRemoval" ]=> bool( false ) } } [ "isIdentifierComposite" ]=> bool( false ) [ "containsForeignIdentifier" ]=> bool( false ) [ "idGenerator" ]=> NULL [ "sequenceGeneratorDefinition" ]=> NULL [ "tableGeneratorDefinition" ]=> NULL [ "changeTrackingPolicy" ]=> int (1) [ "isVersioned" ]=> NULL [ "versionField" ]=> NULL [ "reflClass" ]=> NULL [ "isReadOnly" ]=> bool( false ) [ "namingStrategy" : protected ]=> object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) { } [ "reflFields" ]=> array(0) { } [ "_prototype" : "Doctrine\ORM\Mapping\ClassMetadataInfo" : private ]=> NULL } object(Doctrine\ORM\Mapping\ClassMetadata)#474 (36) { [ "name" ]=> string(6) "Recipe" [ "namespace" ]=> string(0) "" [ "rootEntityName" ]=> string(6) "Recipe" [ "customGeneratorDefinition" ]=> NULL [ "customRepositoryClassName" ]=> NULL [ "isMappedSuperclass" ]=> bool( false ) [ "parentClasses" ]=> array(0) { } [ "subClasses" ]=> array(0) { } [ "namedQueries" ]=> array(0) { } [ "namedNativeQueries" ]=> array(0) { } [ "sqlResultSetMappings" ]=> array(0) { } [ "identifier" ]=> array(1) { [0]=> string(8) "recipeId" } [ "inheritanceType" ]=> int (1) [ "generatorType" ]=> int (1) [ "fieldMappings" ]=> array(3) { [ "recipeId" ]=> array(6) { [ "id" ]=> bool( true ) [ "fieldName" ]=> string(8) "recipeId" [ "columnName" ]=> string(9) "recipe_id" [ "type" ]=> string(7) "integer" [ "unsigned" ]=> bool( false ) [ "nullable" ]=> bool( false ) } [ "name" ]=> array(6) { [ "fieldName" ]=> string(4) "name" [ "columnName" ]=> string(4) "name" [ "type" ]=> string(6) "string" [ "length" ]=> int (255) [ "fixed" ]=> bool( false ) [ "nullable" ]=> bool( false ) } [ "description" ]=> array(4) { [ "fieldName" ]=> string(11) "description" [ "columnName" ]=> string(11) "description" [ "type" ]=> string(4) "text" [ "nullable" ]=> bool( true ) } } [ "fieldNames" ]=> array(3) { [ "recipe_id" ]=> string(8) "recipeId" [ "name" ]=> string(4) "name" [ "description" ]=> string(11) "description" } [ "columnNames" ]=> array(3) { [ "recipeId" ]=> string(9) "recipe_id" [ "name" ]=> string(4) "name" [ "description" ]=> string(11) "description" } [ "discriminatorValue" ]=> NULL [ "discriminatorMap" ]=> array(0) { } [ "discriminatorColumn" ]=> NULL [ "table" ]=> array(1) { [ "name" ]=> string(6) "recipe" } [ "lifecycleCallbacks" ]=> array(0) { } [ "associationMappings" ]=> array(2) { [ "recipeCategory" ]=> array(15) { [ "fieldName" ]=> string(14) "recipeCategory" [ "targetEntity" ]=> string(14) "RecipeCategory" [ "mappedBy" ]=> string(6) "recipe" [ "type" ]=> int (8) [ "inversedBy" ]=> NULL [ "isOwningSide" ]=> bool( false ) [ "sourceEntity" ]=> string(6) "Recipe" [ "fetch" ]=> int (2) [ "cascade" ]=> array(0) { } [ "isCascadeRemove" ]=> bool( false ) [ "isCascadePersist" ]=> bool( false ) [ "isCascadeRefresh" ]=> bool( false ) [ "isCascadeMerge" ]=> bool( false ) [ "isCascadeDetach" ]=> bool( false ) [ "orphanRemoval" ]=> bool( false ) } [ "users" ]=> array(19) { [ "fieldName" ]=> string(5) "users" [ "targetEntity" ]=> string(5) "Users" [ "inversedBy" ]=> string(12) "recipeRecipe" [ "joinTable" ]=> array(3) { [ "name" ]=> string(13) "users_recipes" [ "joinColumns" ]=> array(1) { [0]=> array(2) { [ "name" ]=> string(16) "recipe_recipe_id" [ "referencedColumnName" ]=> string(9) "recipe_id" } } [ "inverseJoinColumns" ]=> array(1) { [0]=> array(2) { [ "name" ]=> string(8) "users_id" [ "referencedColumnName" ]=> string(2) "id" } } } [ "type" ]=> int (8) [ "mappedBy" ]=> NULL [ "isOwningSide" ]=> bool( true ) [ "sourceEntity" ]=> string(6) "Recipe" [ "fetch" ]=> int (2) [ "cascade" ]=> array(0) { } [ "isCascadeRemove" ]=> bool( false ) [ "isCascadePersist" ]=> bool( false ) [ "isCascadeRefresh" ]=> bool( false ) [ "isCascadeMerge" ]=> bool( false ) [ "isCascadeDetach" ]=> bool( false ) [ "joinTableColumns" ]=> array(2) { [0]=> string(16) "recipe_recipe_id" [1]=> string(8) "users_id" } [ "relationToSourceKeyColumns" ]=> array(1) { [ "recipe_recipe_id" ]=> string(9) "recipe_id" } [ "relationToTargetKeyColumns" ]=> array(1) { [ "users_id" ]=> string(2) "id" } [ "orphanRemoval" ]=> bool( false ) } } [ "isIdentifierComposite" ]=> bool( false ) [ "containsForeignIdentifier" ]=> bool( false ) [ "idGenerator" ]=> NULL [ "sequenceGeneratorDefinition" ]=> NULL [ "tableGeneratorDefinition" ]=> NULL [ "changeTrackingPolicy" ]=> int (1) [ "isVersioned" ]=> NULL [ "versionField" ]=> NULL [ "reflClass" ]=> NULL [ "isReadOnly" ]=> bool( false ) [ "namingStrategy" : protected ]=> object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) { } [ "reflFields" ]=> array(0) { } [ "_prototype" : "Doctrine\ORM\Mapping\ClassMetadataInfo" : private ]=> NULL } object(Doctrine\ORM\Mapping\ClassMetadata)#476 (36) { [ "name" ]=> string(14) "RecipeCategory" [ "namespace" ]=> string(0) "" [ "rootEntityName" ]=> string(14) "RecipeCategory" [ "customGeneratorDefinition" ]=> NULL [ "customRepositoryClassName" ]=> NULL [ "isMappedSuperclass" ]=> bool( false ) [ "parentClasses" ]=> array(0) { } [ "subClasses" ]=> array(0) { } [ "namedQueries" ]=> array(0) { } [ "namedNativeQueries" ]=> array(0) { } [ "sqlResultSetMappings" ]=> array(0) { } [ "identifier" ]=> array(1) { [0]=> string(2) "id" } [ "inheritanceType" ]=> int (1) [ "generatorType" ]=> int (1) [ "fieldMappings" ]=> array(3) { [ "id" ]=> array(6) { [ "id" ]=> bool( true ) [ "fieldName" ]=> string(2) "id" [ "columnName" ]=> string(2) "id" [ "type" ]=> string(7) "integer" [ "unsigned" ]=> bool( false ) [ "nullable" ]=> bool( false ) } [ "name" ]=> array(6) { [ "fieldName" ]=> string(4) "name" [ "columnName" ]=> string(4) "name" [ "type" ]=> string(6) "string" [ "length" ]=> int (45) [ "fixed" ]=> bool( false ) [ "nullable" ]=> bool( false ) } [ "description" ]=> array(6) { [ "fieldName" ]=> string(11) "description" [ "columnName" ]=> string(11) "description" [ "type" ]=> string(6) "string" [ "length" ]=> int (45) [ "fixed" ]=> bool( false ) [ "nullable" ]=> bool( true ) } } [ "fieldNames" ]=> array(3) { [ "id" ]=> string(2) "id" [ "name" ]=> string(4) "name" [ "description" ]=> string(11) "description" } [ "columnNames" ]=> array(3) { [ "id" ]=> string(2) "id" [ "name" ]=> string(4) "name" [ "description" ]=> string(11) "description" } [ "discriminatorValue" ]=> NULL [ "discriminatorMap" ]=> array(0) { } [ "discriminatorColumn" ]=> NULL [ "table" ]=> array(1) { [ "name" ]=> string(15) "recipe_category" } [ "lifecycleCallbacks" ]=> array(0) { } [ "associationMappings" ]=> array(2) { [ "recipe" ]=> array(19) { [ "fieldName" ]=> string(6) "recipe" [ "targetEntity" ]=> string(6) "Recipe" [ "inversedBy" ]=> string(14) "recipeCategory" [ "joinTable" ]=> array(3) { [ "name" ]=> string(22) "recipe_category_recipe" [ "joinColumns" ]=> array(1) { [0]=> array(2) { [ "name" ]=> string(18) "recipe_category_id" [ "referencedColumnName" ]=> string(2) "id" } } [ "inverseJoinColumns" ]=> array(1) { [0]=> array(2) { [ "name" ]=> string(9) "recipe_id" [ "referencedColumnName" ]=> string(9) "recipe_id" } } } [ "type" ]=> int (8) [ "mappedBy" ]=> NULL [ "isOwningSide" ]=> bool( true ) [ "sourceEntity" ]=> string(14) "RecipeCategory" [ "fetch" ]=> int (2) [ "cascade" ]=> array(0) { } [ "isCascadeRemove" ]=> bool( false ) [ "isCascadePersist" ]=> bool( false ) [ "isCascadeRefresh" ]=> bool( false ) [ "isCascadeMerge" ]=> bool( false ) [ "isCascadeDetach" ]=> bool( false ) [ "joinTableColumns" ]=> array(2) { [0]=> string(18) "recipe_category_id" [1]=> string(9) "recipe_id" } [ "relationToSourceKeyColumns" ]=> array(1) { [ "recipe_category_id" ]=> string(2) "id" } [ "relationToTargetKeyColumns" ]=> array(1) { [ "recipe_id" ]=> string(9) "recipe_id" } [ "orphanRemoval" ]=> bool( false ) } [ "parent" ]=> array(19) { [ "fieldName" ]=> string(6) "parent" [ "targetEntity" ]=> string(14) "RecipeCategory" [ "joinColumns" ]=> array(1) { [0]=> array(2) { [ "name" ]=> string(9) "parent_id" [ "referencedColumnName" ]=> string(2) "id" } } [ "type" ]=> int (2) [ "mappedBy" ]=> NULL [ "inversedBy" ]=> NULL [ "isOwningSide" ]=> bool( true ) [ "sourceEntity" ]=> string(14) "RecipeCategory" [ "fetch" ]=> int (2) [ "cascade" ]=> array(0) { } [ "isCascadeRemove" ]=> bool( false ) [ "isCascadePersist" ]=> bool( false ) [ "isCascadeRefresh" ]=> bool( false ) [ "isCascadeMerge" ]=> bool( false ) [ "isCascadeDetach" ]=> bool( false ) [ "sourceToTargetKeyColumns" ]=> array(1) { [ "parent_id" ]=> string(2) "id" } [ "joinColumnFieldNames" ]=> array(1) { [ "parent_id" ]=> string(9) "parent_id" } [ "targetToSourceKeyColumns" ]=> array(1) { [ "id" ]=> string(9) "parent_id" } [ "orphanRemoval" ]=> bool( false ) } } [ "isIdentifierComposite" ]=> bool( false ) [ "containsForeignIdentifier" ]=> bool( false ) [ "idGenerator" ]=> NULL [ "sequenceGeneratorDefinition" ]=> NULL [ "tableGeneratorDefinition" ]=> NULL [ "changeTrackingPolicy" ]=> int (1) [ "isVersioned" ]=> NULL [ "versionField" ]=> NULL [ "reflClass" ]=> NULL [ "isReadOnly" ]=> bool( false ) [ "namingStrategy" : protected ]=> object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) { } [ "reflFields" ]=> array(0) { } [ "_prototype" : "Doctrine\ORM\Mapping\ClassMetadataInfo" : private ]=> NULL } object(Doctrine\ORM\Mapping\ClassMetadata)#478 (36) { [ "name" ]=> string(4) "Step" [ "namespace" ]=> string(0) "" [ "rootEntityName" ]=> string(4) "Step" [ "customGeneratorDefinition" ]=> NULL [ "customRepositoryClassName" ]=> NULL [ "isMappedSuperclass" ]=> bool( false ) [ "parentClasses" ]=> array(0) { } [ "subClasses" ]=> array(0) { } [ "namedQueries" ]=> array(0) { } [ "namedNativeQueries" ]=> array(0) { } [ "sqlResultSetMappings" ]=> array(0) { } [ "identifier" ]=> array(2) { [0]=> string(10) "stepNumber" [1]=> string(6) "recipe" } [ "inheritanceType" ]=> int (1) [ "generatorType" ]=> int (1) [ "fieldMappings" ]=> array(4) { [ "stepNumber" ]=> array(6) { [ "id" ]=> bool( true ) [ "fieldName" ]=> string(10) "stepNumber" [ "columnName" ]=> string(11) "step_number" [ "type" ]=> string(7) "integer" [ "unsigned" ]=> bool( false ) [ "nullable" ]=> bool( false ) } [ "description" ]=> array(4) { [ "fieldName" ]=> string(11) "description" [ "columnName" ]=> string(11) "description" [ "type" ]=> string(4) "text" [ "nullable" ]=> bool( true ) } [ "timer" ]=> array(5) { [ "fieldName" ]=> string(5) "timer" [ "columnName" ]=> string(5) "timer" [ "type" ]=> string(7) "integer" [ "unsigned" ]=> bool( false ) [ "nullable" ]=> bool( true ) } [ "image" ]=> array(6) { [ "fieldName" ]=> string(5) "image" [ "columnName" ]=> string(5) "image" [ "type" ]=> string(6) "string" [ "length" ]=> int (100) [ "fixed" ]=> bool( false ) [ "nullable" ]=> bool( true ) } } [ "fieldNames" ]=> array(4) { [ "step_number" ]=> string(10) "stepNumber" [ "description" ]=> string(11) "description" [ "timer" ]=> string(5) "timer" [ "image" ]=> string(5) "image" } [ "columnNames" ]=> array(4) { [ "stepNumber" ]=> string(11) "step_number" [ "description" ]=> string(11) "description" [ "timer" ]=> string(5) "timer" [ "image" ]=> string(5) "image" } [ "discriminatorValue" ]=> NULL [ "discriminatorMap" ]=> array(0) { } [ "discriminatorColumn" ]=> NULL [ "table" ]=> array(1) { [ "name" ]=> string(4) "step" } [ "lifecycleCallbacks" ]=> array(0) { } [ "associationMappings" ]=> array(1) { [ "recipe" ]=> array(20) { [ "fieldName" ]=> string(6) "recipe" [ "targetEntity" ]=> string(6) "Recipe" [ "id" ]=> bool( true ) [ "joinColumns" ]=> array(1) { [0]=> array(2) { [ "name" ]=> string(9) "recipe_id" [ "referencedColumnName" ]=> string(9) "recipe_id" } } [ "type" ]=> int (1) [ "mappedBy" ]=> NULL [ "inversedBy" ]=> NULL [ "isOwningSide" ]=> bool( true ) [ "sourceEntity" ]=> string(4) "Step" [ "fetch" ]=> int (2) [ "cascade" ]=> array(0) { } [ "isCascadeRemove" ]=> bool( false ) [ "isCascadePersist" ]=> bool( false ) [ "isCascadeRefresh" ]=> bool( false ) [ "isCascadeMerge" ]=> bool( false ) [ "isCascadeDetach" ]=> bool( false ) [ "sourceToTargetKeyColumns" ]=> array(1) { [ "recipe_id" ]=> string(9) "recipe_id" } [ "joinColumnFieldNames" ]=> array(1) { [ "recipe_id" ]=> string(9) "recipe_id" } [ "targetToSourceKeyColumns" ]=> array(1) { [ "recipe_id" ]=> string(9) "recipe_id" } [ "orphanRemoval" ]=> bool( false ) } } [ "isIdentifierComposite" ]=> bool( true ) [ "containsForeignIdentifier" ]=> bool( true ) [ "idGenerator" ]=> NULL [ "sequenceGeneratorDefinition" ]=> NULL [ "tableGeneratorDefinition" ]=> NULL [ "changeTrackingPolicy" ]=> int (1) [ "isVersioned" ]=> NULL [ "versionField" ]=> NULL [ "reflClass" ]=> NULL [ "isReadOnly" ]=> bool( false ) [ "namingStrategy" : protected ]=> object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) { } [ "reflFields" ]=> array(0) { } [ "_prototype" : "Doctrine\ORM\Mapping\ClassMetadataInfo" : private ]=> NULL }
        Hide
        Benjamin Eberlei added a comment -

        Fixed and merged back to 2.3

        Show
        Benjamin Eberlei added a comment - Fixed and merged back to 2.3
        Hide
        Nicholas Van Dusen added a comment -

        I tested this again using 2.3.4 (the version which contains this fix) and it is still occurring. Attempting to import mapping for a table with 2 foreign keys in the primary key results in the error "Database does not have any mapping information." Adding a third column on the primary key "fixes" the issue.

        Currently our developers are being asked to add a fake third part to the key to work around the issue, then delete that key once they get into the entity class. This is a bit tedious and I'd love to see a fix!

        Show
        Nicholas Van Dusen added a comment - I tested this again using 2.3.4 (the version which contains this fix) and it is still occurring. Attempting to import mapping for a table with 2 foreign keys in the primary key results in the error "Database does not have any mapping information." Adding a third column on the primary key "fixes" the issue. Currently our developers are being asked to add a fake third part to the key to work around the issue, then delete that key once they get into the entity class. This is a bit tedious and I'd love to see a fix!
        Hide
        Nicholas Van Dusen added a comment -

        Issue still present in 2.3.4 and 2.4.0-RC1

        Show
        Nicholas Van Dusen added a comment - Issue still present in 2.3.4 and 2.4.0-RC1
        Hide
        Guillermo added a comment -

        The database engine I use is PostgreSQL. I'm having problems when mapping entities with composite primary keys in other tables.

        CREATE TABLE public.establecimiento
            (
              id_establecimiento integer NOT NULL,
              establecimiento character varying(100) NOT NULL,
              CONSTRAINT pk_establecimiento PRIMARY KEY (id_establecimiento )
            )
            WITH (
              OIDS=FALSE
            );
            CREATE TABLE public.establecimiento_sec
            (
              id_establecimiento_sec integer NOT NULL,
              id_establecimiento integer NOT NULL,
              det_seccion character varying(40) NOT NULL,
              plano character varying(100),
              sector_ingreso character varying(254),
              sponsor_imagen_sec character varying(96000),
              CONSTRAINT pk_establecimientos_sec PRIMARY KEY (id_establecimiento_sec , id_establecimiento ),
              CONSTRAINT fk_establec_reference_establec FOREIGN KEY (id_establecimiento)
                  REFERENCES public.establecimiento (id_establecimiento) MATCH SIMPLE
                  ON UPDATE RESTRICT ON DELETE RESTRICT
            )
            WITH (
              OIDS=TRUE
            );
            CREATE TABLE public.establecimiento_sec_plano
            (
              id_establecimiento_sec_plano integer NOT NULL,
              id_establecimiento_sec integer NOT NULL,
              id_establecimiento integer NOT NULL,
              det_plano character varying(512),
              cantidad integer NOT NULL,
              precio double precision,
              insert_charge double precision DEFAULT 0,
              descr character varying(254),
              CONSTRAINT pk_establecimiento_sec_plano PRIMARY KEY (id_establecimiento_sec_plano , id_establecimiento_sec , id_establecimiento ),
              CONSTRAINT fk_establecimiento_sec FOREIGN KEY (id_establecimiento, id_establecimiento_sec)
                  REFERENCES public.establecimiento_sec (id_establecimiento, id_establecimiento_sec) MATCH SIMPLE
                  ON UPDATE NO ACTION ON DELETE CASCADE
            )
            WITH (
              OIDS=FALSE
            );

        Defining the entity establecimientoSecPlano, $establecimientoSec variable containing the keys $establecimiento and $id_establecimiento_sec

        //Entity/EstablecimientosSecPlano

        /**
             * @ORM\Id
             * @ORM\ManyToOne(targetEntity="Ticketway\PruebaBundle\Entity\EstablecimientosSec")
             * @ORM\JoinColumns(
             *      @ORM\JoinColumn(name="id_establecimiento_sec", referencedColumnName="id_establecimiento_sec"),
             *      @ORM\JoinColumn(name="id_establecimiento", referencedColumnName="id_establecimiento")) 
             */
            private $establecimientoSec;

        //Entity/EstablecimientosSec

        /**
             * @ORM\Id
             * @ORM\ManyToOne(targetEntity="Ticketway\PruebaBundle\Entity\Establecimientos")
             * @ORM\JoinColumn(name="id_establecimiento", referencedColumnName="id_establecimiento") 
             */
            private $establecimiento;

        When executing the command doctrine: mapping: import I get the following error

        [Doctrine\ORM\Mapping\MappingException]
        It is not possible to map entity 'EstablecimientoSec' with a composite primary key as part of the
        primary key of another entity 'EstablecimientoSecPlano#idEstablecimiento'.

        Show
        Guillermo added a comment - The database engine I use is PostgreSQL . I'm having problems when mapping entities with composite primary keys in other tables. CREATE TABLE public .establecimiento ( id_establecimiento integer NOT NULL, establecimiento character varying(100) NOT NULL, CONSTRAINT pk_establecimiento PRIMARY KEY (id_establecimiento ) ) WITH ( OIDS=FALSE ); CREATE TABLE public .establecimiento_sec ( id_establecimiento_sec integer NOT NULL, id_establecimiento integer NOT NULL, det_seccion character varying(40) NOT NULL, plano character varying(100), sector_ingreso character varying(254), sponsor_imagen_sec character varying(96000), CONSTRAINT pk_establecimientos_sec PRIMARY KEY (id_establecimiento_sec , id_establecimiento ), CONSTRAINT fk_establec_reference_establec FOREIGN KEY (id_establecimiento) REFERENCES public .establecimiento (id_establecimiento) MATCH SIMPLE ON UPDATE RESTRICT ON DELETE RESTRICT ) WITH ( OIDS=TRUE ); CREATE TABLE public .establecimiento_sec_plano ( id_establecimiento_sec_plano integer NOT NULL, id_establecimiento_sec integer NOT NULL, id_establecimiento integer NOT NULL, det_plano character varying(512), cantidad integer NOT NULL, precio double precision, insert_charge double precision DEFAULT 0, descr character varying(254), CONSTRAINT pk_establecimiento_sec_plano PRIMARY KEY (id_establecimiento_sec_plano , id_establecimiento_sec , id_establecimiento ), CONSTRAINT fk_establecimiento_sec FOREIGN KEY (id_establecimiento, id_establecimiento_sec) REFERENCES public .establecimiento_sec (id_establecimiento, id_establecimiento_sec) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE ) WITH ( OIDS=FALSE ); Defining the entity establecimientoSecPlano, $establecimientoSec variable containing the keys $establecimiento and $id_establecimiento_sec //Entity/EstablecimientosSecPlano /** * @ORM\Id * @ORM\ManyToOne(targetEntity= "Ticketway\PruebaBundle\Entity\EstablecimientosSec" ) * @ORM\JoinColumns( * @ORM\JoinColumn(name= "id_establecimiento_sec" , referencedColumnName= "id_establecimiento_sec" ), * @ORM\JoinColumn(name= "id_establecimiento" , referencedColumnName= "id_establecimiento" )) */ private $establecimientoSec; //Entity/EstablecimientosSec /** * @ORM\Id * @ORM\ManyToOne(targetEntity= "Ticketway\PruebaBundle\Entity\Establecimientos" ) * @ORM\JoinColumn(name= "id_establecimiento" , referencedColumnName= "id_establecimiento" ) */ private $establecimiento; When executing the command doctrine: mapping: import I get the following error [Doctrine\ORM\Mapping\MappingException] It is not possible to map entity 'EstablecimientoSec' with a composite primary key as part of the primary key of another entity 'EstablecimientoSecPlano#idEstablecimiento'.
        Hide
        Sam Van der Borght added a comment -

        We are having the same problem as Guillermo. Any idea on how to fix this issue?
        Does anybody know why this problem occurs? I have been looking in the code but havent had much success.

        Show
        Sam Van der Borght added a comment - We are having the same problem as Guillermo. Any idea on how to fix this issue? Does anybody know why this problem occurs? I have been looking in the code but havent had much success.
        Hide
        Diego Antunes added a comment -

        Doesn't work for me either, composite keys aren't working in 2.3.4

        Can we get a fix for this?

        Show
        Diego Antunes added a comment - Doesn't work for me either, composite keys aren't working in 2.3.4 Can we get a fix for this?

          People

          • Assignee:
            Benjamin Eberlei
            Reporter:
            Nicholas Van Dusen
          • Votes:
            4 Vote for this issue
            Watchers:
            9 Start watching this issue

            Dates

            • Created:
              Updated: