0

I'm trying to run a simple SQL statement (something like select * from table) in my Symfony2 controller but it's not working. Somehow Symfony cannot find the class.

some info:

  1. I've tried providing the full namespace + class name and just class name in the FROM clause
  2. I've tried DQL and QueryBuilder (see code below. option1 and option2)
  3. AppKernel is loading my DoctrineBundle. This was already there when I use composer to create my project
  4. I've tried auto_mapping true and false in settings.yml
  5. snippets of my codes are below

error message:

[Semantical Error] line 0, col 14 near 'Job j ORDER BY': Error: Class 'Job' is not defined. 500 Internal Server Error - QueryException 1 linked Exception: QueryException » [2/2] QueryException: [Semantical Error] line 0, col 14 near 'Job j ORDER BY': Error: Class 'Job' is not defined. + [1/2] QueryException: SELECT u FROM Job j ORDER BY j.name ASC + 

settings.yml

doctrine: dbal: driver: "%database_driver%" host: "%database_host%" port: "%database_port%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" charset: UTF8 # if using pdo_sqlite as your database driver, add the path in parameters.yml # e.g. database_path: "%kernel.root_dir%/data/data.db3" # path: "%database_path%" orm: auto_generate_proxy_classes: "%kernel.debug%" auto_mapping: true #auto_mapping: false #mappings: # MyAppMyBundle: # type: annotation # dir: Entity/ 

my controller

<?php // src/MyApp/MyBundle/Controller/JobsController.php namespace MyApp\MyBundle\Controller; use MyApp\MyBundle\Entity\Job; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class JobsController extends Controller { public function listAction() { $em = $this->getDoctrine()->getEntityManager(); //$qb = $em->createQueryBuilder(); //option1 //$qb ->select("j") // ->from("Job", "j") // ->orderBy("j.name", "ASC");*/ //return $this->render('MyBundle:Jobs:list.html.twig', array('jobs' => $qb->getQuery()->getResult())); //option2 $qb = $em->createQuery("SELECT u FROM Job j ORDER BY j.name ASC"); return $this->render('MyBundle:Jobs:list.html.twig', array('jobs' => $qb->getResult())); } } 

my entity class

<?php // src/MyApp/MyBundle/Entity/Job.php namespace MyApp\MyBundle\Entity; use Doctrine\ORM\Mapping; /** * @Mapping\Entity * @Mapping\Table(name="jobs") */ class Job { /** * @Mapping\Column(name="job_id", type="integer") * @Mapping\Id * @Mapping\GeneratedValue(strategy="AUTO") */ protected $jobId; /** * @Mapping\Column(name="name", type="text") */ protected $name; /** * @Mapping\Column(name="job_desc", type="text") */ protected $description; /** * @Mapping\Column(name="personal_req", type="text") */ protected $requirements; /** * Get jobid * * @return integer */ public function getJobId() { return $this->applicationId; } /** * Set name * * @param \text $name * @return Job */ public function setName($name) { $this->name = $name; return $this; } /** * Get name * * @return text */ public function getName() { return $this->name; } /** * Set description * * @param \text $description * @return Job */ public function setDescription($description) { $this->description = $description; return $this; } /** * Get description * * @return text */ public function getDescription() { return $this->description; } /** * Set requirements * * @param \text $requirements * @return Job */ public function setRequirements($requirements) { $this->requirements = $requirements; return $this; } /** * Get requirements * * @return text */ public function getRequirements() { return $this->requirements; } } 
3
  • 1
    Your table name is 'jobs' (@Mapping\Table(name="jobs")), why you try to select something from 'Job'? Commented Oct 2, 2014 at 7:50
  • Try to refer to the table via the repository with the name of the bundle. check the doc Commented Oct 2, 2014 at 7:52
  • I'm using "Job" instead of "jobs" because "Job" is the class name? Commented Oct 3, 2014 at 11:05

2 Answers 2

2
  1. use the full namespace if you make a query directly with entitymanager or just MyAppMyBundle:Job
  2. be sure that your bundle is present in AppKernel
  3. prefer to use $em->getRepository('MyAppMyBundle:Job')->createQueryBuilder('j') or $em->getRepository('MyAppMyBundle:Job')->findBy(array(),array('name' => 'ASC')
  4. validate your model with php app/console doctrine:mapping:info and php app/console doctrine:schema:validate

Exceptions in symfony are always perfect so keep the focus on what your exception says

Sign up to request clarification or add additional context in comments.

Comments

0

verify namespace of entity class. Because no generate error when write wrong namespace, but no find entity

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.