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:
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;
}
}
MyAppMyBundle:Job
$em->getRepository('MyAppMyBundle:Job')->createQueryBuilder('j')
or $em->getRepository('MyAppMyBundle:Job')->findBy(array(),array('name' => 'ASC')
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
verify namespace of entity class. Because no generate error when write wrong namespace, but no find entity
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.