Error using ORM to import a new table - php

I have an existing php web app written using symfony2 and doctrine2. I added a table to the database. Now, I want the ORM to write the php classes for me. I tried doing this:
php app/console doctrine:mapping:convert xml ./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm --from-database --force
I also tried this:
php app/console doctrine:mapping:import SomeBundle annotation
Both of them throw this error:
[ErrorException]
Warning: class_parents(): Class SomeClass does not exist
and could not be loaded in C:\wamp\www\vac\vendor\
gedmo-doctrine-extensions\lib\Gedmo\Mapping\
ExtensionMetadataFactory.php line 80
Any ideas on what I need to do?

delete all your entities along with your Entity Folder.
delete all orm files with your orm folder.
then try to create orm and entity files from your db having new table.
a.$ php app/console doctrine:mapping:convert xml ./src/YourDir/YourBundle/Resources/config/doctrine/metadata/orm --from-database --force
b.$ php app/console doctrine:mapping:import YourDirYourBundle annotation
c.$ php app/console doctrine:generate:entities YourDirYourBundle
Try this.

Related

doctrine:mongodb:generate:documents No bundle found

I want to generate Getters and Setters for specific document in bundle. It works for entire bundle
php bin/console doctrine:mongodb:generate:documents AppBundle
but I can't find out how to specify one document. Entity class is located at
src/AppBundle/Document/Settings/Settings.php
No one of these worked:
php bin/console doctrine:mongodb:generate:documents AppBundle:Settings
php bin/console doctrine:mongodb:generate:documents AppBundle:Document:Settings:Settings
php bin/console doctrine:mongodb:generate:documents AppBundle\Settings
EDIT:
There is --document option that do the trick
php bin/console doctrine:mongodb:generate:documents AppBundle --document Settings

Doctrine not importing particular tables

I am working on symfony2 and trying to create entities from database .My problem is that I have 12 tables in database but only 10 entities are getting generated .
Those two tables are not getting imported even when I am trying to import them individually.
I have tried commands mentioned in thread
But when I run command
php app/console doctrine:mapping:import AppMyBundle \
metadata_format --filter="Yourtablename"
it says
Database does not have any mapping information.
Sorry I am new to symfony and doctrine .Please suggest me what should I do?
At first, try to convert annotation with --from-database argument, as described in this answer:
Step1
php app/console doctrine:mapping:convert annotation /src/App/MyBundle/Resources/config/doctrine --from-database --filter="table_name"
Step2 Now you can apply importing
php app/console doctrine:mapping:import AppMyBundle annotation --filter="table_name"
Step3
php app/console doctrine:generate:entities AppMyBundle --no-backup

Generate Entities from an Existing Database

I am new to Symfony and now I am currently doing an application using this framework. I am now trying to generate entities from an existing database and while I run the following command:
php app\console doctrine:mapping:convert annotation .\src\AppBundle\Resources\config\doctrine
I've got this error message:
No Metadata Classes to process.
Could you please tell me what's happening with this?
From the docs, it seems you are missing the --from-database argument. I've never used that tool though.
http://symfony.com/fr/doc/current/cookbook/doctrine/reverse_engineering.html
php app/console doctrine:mapping:convert xml ./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm --from-database --force

Symfony2 Import entities from existing database with Doctrine

I am a beginner with symfony. I have tried to follow the official documentation http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html to import a entities from MySQL to a symfony2 project in a Debian testing box. but I didn't succeeded.
Then searching here and there I have found this Generating a single Entity from existing database using symfony2 and doctrine here, but I cant make it work, my console:
"ask Doctrine to introspect the database and generate the corresponding metadata files"
root#khs01wxl001:/var/www/organizer$ php app/console doctrine:mapping:import --force organizerscheduleBundle php
Importing mapping information from "default" entity manager
> writing /var/www/organizer/src/organizer/scheduleBundle/Resources/config/doctrine/Dept.orm.php
> writing /var/www/organizer/src/organizer/scheduleBundle/Resources/config/doctrine/Desg.orm.php
> writing /var/www/organizer/src/organizer/scheduleBundle/Resources/config/doctrine/Dir.orm.php
> writing /var/www/organizer/src/organizer/scheduleBundle/Resources/config/doctrine/Schedule.orm.php
> writing /var/www/organizer/src/organizer/scheduleBundle/Resources/config/doctrine/Username.orm.php
> writing /var/www/organizer/src/organizer/scheduleBundle/Resources/config/doctrine/Userrole.orm.php
root#khs01wxl001:/var/www/organizer$
So far so good, but now "you can ask Doctrine to build related entity classes by executing the following two commands.
$ php app/console doctrine:mapping:convert annotation ./src
$ php app/console doctrine:generate:entities AcmeBlogBundle
but when I do it the first one doesn't work for me:
root#khs01wxl001:/var/www/organizer$ php app/console doctrine:mapping:convert annotation ./src/organizer/scheduleBundle/Resources/config/doctrine/
No Metadata Classes to process.
root#khs01wxl001:/var/www/organizer$
Any suggestion?
Try with:
# write the structure to annotation file (I prefear to use YML instead annotation but should be the same)
$ php app/console doctrine:mapping:convert annotation ./src/organizer/scheduleBundle/Resources/config/doctrine/metadata/orm --from-database --force
# Import the structure
$ php app/console doctrine:mapping:import organizerscheduleBundle annotation
# Generate Entities file class
$ php app/console doctrine:generate:entities organizerscheduleBundle
More docs here:
http://docs.doctrine-project.org/en/2.0.x/reference/tools.html#reverse-engineering
Not all will be imported (the doc says 70-80% but in my opinion is less).
PS. A best pratice is to call the bundle OrganizerScheduleBundle (look uppercase letters) with organizer as company name, so inside the developer/company name folder there will be all the bundles.
If you are using symfony 3 and wanna use the annotations, i used this:
php bin/console doctrine:mapping:import --force AcmeBlogBundle annotation
This generate all you need, without needing the doctrine:mapping:convert

How to generate entity from existing table in symfony2?

I have table "my_table" with some fields.
I want generate Entity in MyBundle used "my_table". But I don't want recreate all entities in MyBundle.
How can I do this?
Here is the way you can do it,
First step, ask Doctrine to introspect the database and generate the corresponding xml or yml metadata files.
php app/console doctrine:mapping:convert [xml|yml] Path/To/MyBundle/Resources/config/doctrine/metadata/orm --from-database --force --filter=MyTable
Second step, ask Doctrine to import the schema and build related entity classes by executing the following two commands.
php app/console doctrine:mapping:import MyBundle [xml|yml|annotation] --filter=MyTable
php app/console doctrine:generate:entities Path\To\MyBundle\EntityFolder\\MyTable
Take a look at the How to generate Entities from an Existing Database section of the documentation
Simple Working Solution for Symfony 2.7 option annotation and for [/xml/yml] see http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html
do 3 commands in 3 steps:
Command #1:
$ php app/console doctrine:mapping:import --force AppBundle xml --filter="Meeting"
Output:
writing C:\xampp\htdocs\localxyz\src\AppBundle/Resources/config/doctrine/Meeting.orm.xml
Command #2:
$ php app/console doctrine:mapping:convert annotation ./src/AppBundle/Entity --from-database --filter="Meeting"
Output:
Processing entity "Meeting"
Exporting "annotation" mapping information to "C:\xampp\htdocs\localxyz\src\Entity"
Command #3:
$ php app/console doctrine:generate:entities AppBundle:Meeting --no-backup
Output:
Generating entity "AppBundle\Entity\Meeting"
generating AppBundle\Entity\Meeting
where:
AppBundle is exactly your "AppBundle" in 2.7 symfony
Meeting is the target table (case sensitive)
TO BE SURE, check this directory:
C:\xampp\htdocs\myproj\src\AppBundle/Resources/config/doctrine/Meeting.orm.xml
C:\xampp\htdocs\myproj\src\AppBundle/Resources/config/doctrine/MeetingOriginal.orm.xml
AND MAKING SURE you only have .xml files for the table you want to create entity class files and no others.
It works very well for me.
For explanation please read: http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html
php app/console doctrine:mapping:import "MyCustomBundle" xml --filter=MyMatchedEntity
Although this is an old post but if someone gets following error,
Database does not have any mapping information.
Check
If your table name is blog_post then in filter option use BlogPost and not blog_post
Reference: https://stackoverflow.com/a/27019561/6504104
though this is covered by answers above but I missed it and was getting this error
So I wanted to make this explicit
Also in symfony >= 3.4 its' php bin/console e.g.
php bin/console doctrine:mapping:import --force AppBundle xml --filter="BlogPost"
and then
php bin/console doctrine:mapping:convert annotation ./src/AppBundle/Entity --from-database --filter="BlogPost"
Thanks...

Categories