Generating entities from database

前端 未结 3 538
闹比i
闹比i 2020-12-10 06:53

I\'m trying to generate entities in symfony2 from an existing empty database (quite large and it would be real pain to create entities from scratch). Sadly, I\'ve encountere

相关标签:
3条回答
  • 2020-12-10 07:39

    I got this error

    Database does not have any mapping information.
    

    in my case it was because I have 2 tables named like these:

    1. mockstore_category
    2. mockstore_product

    when I tried with this command:

    sudo php app/console doctrine:mapping:import --filter="MockstoreProduct" --force MockizartStoreBundle yml
    

    the error Database does not have any mapping information. appeared. but it didn't, when I used it to generate --filter="MockstoreCategory".

    So to generate mapping for mockstore_product table, it should be:

    php app/console doctrine:mapping:import --filter="Product" --force MockizartStoreBundle yml
    

    --filter="Product" NOT --filter="MockstoreProduct"

    Hope this help.

    0 讨论(0)
  • 2020-12-10 07:47

    Your case is well documented in symfony website titled "How to generate Entities from an Existing Database"

    As the documentation stated:

    The first step towards building entity classes from an existing database is to ask Doctrine to introspect the database and generate the corresponding metadata files. Metadata files describe the entity class to generate based on table fields.

    Using following command (assuming your bundle's short name is GOutsideGOBundle)

    $ php app/console doctrine:mapping:import --force GOutsideGOBundle xml

    Then you need to call.

    php app/console doctrine:generate:entities GOutsideGOBundle

    If you need to generate entity classes with annotation mappings, then you have to execute the following command before doctrine:generate:entities

    php app/console doctrine:mapping:convert annotation ./src

    Path should be only ./src instead of ./src/GOutside/GOBundle/Resources/config/doctrine

    Updated:

    If everything is correct in your configuration then getting the error Database does not have any mapping information. is unlikely!! I am not sure about this error. But as per your database table schema, there are some issue which will prevent you from creating mapping information.

    1. Your table contain special type point which doctrine can't handle.
    2. You database table has multiple table without any primary key. Doctrine does not support reverse engineering from tables that don't have a primary key

    To solve problem (1) you can add a custom mapping in your doctrine config section. For example to map the point type as string you can write:

    doctrine:
        dbal:
            //Other connection parameters
            mapping_types:
                point: string
    

    for the second problem you need to define primary key for those tables, those could be new field or could be composite primary key.

    0 讨论(0)
  • 2020-12-10 07:47

    Had the same problem, and it turned out it was the cache:

    console c:c
    

    Solved the problem.

    0 讨论(0)
提交回复
热议问题