0

I'm trying to use the Doctrine components in my app built using silex. I was able to get it to work - well almost.

I have my "User" entity and the corresponding repository

When doing

$app['em']->getRepository('Foo\Entity\User')->findAll()

works as expected, however when trying to make a custom query

      $this->getEntityManager()
                ->createQuery(
                'SELECT
                    u
                FROM 
                    Foo:User u
                WHERE c.id = :x'
                )
                ->setParameter('x',$in)
                ->getResult();

I get this exception

ORMException: Unknown Entity namespace alias 'Foo'

Please ignore the fact that I can make a select with findById() or findBy(array('id'=>$in)) the problem is with the custom query

This are my configs

$app['orm.em.options'] = array(
    'mappings' => array(
        array(
            'type' => 'annotation',
            'namespace' => 'Foo\Entity',     
            'alias' => 'core',
            'path' => '%app.path%/src/Foo/Entity',
            'use_simple_annotation_reader' => false,
        )
));

and

$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src/Foo/Entity"));
$params = $app['db.options'];
$app['em'] = EntityManager::create($params, $config);

After some research possible solutions:

  • auto_mapping: true => tried, no success
  • registering the namespace => tried, not sure if right was done so may be the solution, please advice how to do it right
  • besides all this I have tried to search for git repos with similar 'usage' but didn't get it :(

UPDATE

for the moment I use the following line in my query and it works

FROM 
InstaLikes\Entity\User u
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Ţîgan Ion
  • 176
  • 1
  • 12

2 Answers2

2

When you create custom queries, you should use the fully namespace, in this case: Foo\Entity\User

didando8a
  • 130
  • 1
  • 7
0

I am assuming you have checked the alias you have given in the mappings options?

$app['orm.em.options'] = array(
    'mappings' => array(
        array(
            'type' => 'annotation',
            'namespace' => 'Foo\Entity',     
            'alias' => 'core',
            'path' => '%app.path%/src/Foo/Entity',
            'use_simple_annotation_reader' => false,
        )
));

Should that alias option not be set to Foo instead?

thoroc
  • 3,291
  • 2
  • 27
  • 34