Musterknabe
Musterknabe

Reputation: 6081

Uncaught PHP Exception Doctrine\ORM\ORMException: "Unknown Entity namespace alias 'AppBundle'."

I just started my first project with composer and wanted to set up the database and the classes for it. However I'm stuck. I'm getting the above error in the prod.log

I followed this tutorial here: http://symfony.com/doc/current/book/doctrine.html

I created the database

php bin/console doctrine:database:create

then wanted to create an entity

php bin/console doctrine:generate:entity

When asked for the The Entity shortcut name I entered AppBundle:Product

and then created the database fields etc.

And I'm getting this message

Entity generation

Generating entity class src/AppBundle/Entity/Product.php: OK!
Generating repository class src/AppBundle/Repository/ProductRepository.php: OK!

Everything is OK! Now get to work :).

So this sounds like everything worked, right?

Now in my ProductController I used this

$products = $this->getDoctrine()
    ->getRepository('AppBundle:Product')
    ->findAll();

and I'm getting the error

[2016-02-15 18:56:14] request.CRITICAL: Uncaught PHP Exception Doctrine\ORM\ORMException: "Unknown Entity namespace alias 'AppBundle'." at /home/vagrant/work/homestead/test/vendor/doctrine/orm/lib/Doctrine/ORM/ORMException.php line 271 {"exception":"[object] (Doctrine\\ORM\\ORMException(code: 0): Unknown Entity namespace alias 'AppBundle'. at /home/vagrant/work/homestead/test/vendor/doctrine/orm/lib/Doctrine/ORM/ORMException.php:271)"} []

I also tried

->getRepository('AppBundle\Entity\Product')

but here I'm getting the message

[2016-02-15 19:01:39] request.CRITICAL: Uncaught PHP Exception Doctrine\Common\Persistence\Mapping\MappingException: "The class 'AppBundle\Entity\Product' was not found in the chain configured namespaces " at /home/vagrant/work/homestead/test/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php line 37 {"exception":"[object] (Doctrine\\Common\\Persistence\\Mapping\\MappingException(code: 0): The class 'AppBundle\\Entity\\Product' was not found in the chain configured namespaces  at /home/vagrant/work/homestead/test/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php:37)"} []

How do I actually get this to work/ I just started with the project. Doctrine created the classes though. I have it like this

/src
/src/AppBundle/
/src/AppBundle/Entity
    Product.php
/src/AppBundle/Repository
    ProductRepository.php

Also, in the Product.php this is in the comments of the annotations (if it helps)

 * @ORM\Entity(repositoryClass="AppBundle\Repository\ProductRepository")

Also, when trying this command php bin/console doctrine:generate:entities AppBundle to recreate the entities I'm getting no error message.

I'm getting

Generating entities for bundle "AppBundle"
 > backing up Product.php to Product.php~
 > generating AppBundle\Entity\Product

Upvotes: 5

Views: 3940

Answers (1)

abdiel
abdiel

Reputation: 2106

The solution is delete the cache files, so it is needed if you are working in production mode. In debug mode this is done automatically. For be sure, do that manually just dropping the prod folder under var if you are in 3.x, in 2.x under app.

The command to clear the cache for 2.x is:

php app/console cache:clear --env=prod

Upvotes: 5

Related Questions