2014-07-22 53 views
3

我試圖讓從倉庫類一個非常簡單的SQL查詢,只需select * from Adjudicacion where cursoAcademico_id=$cursoAcademicoActual;Symfony2的createQueryBuilder

這是我的實體:

/** 
* Adjudicacion 
* 
* @ORM\Table(name="Adjudicacion") 
* @ORM\Entity(repositoryClass="Administrador\AdjudicacionBundle\Entity\AdjudicacionRepository") 
*/ 
class Adjudicacion { 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="fechaInicio", type="date") 
    */ 
    private $fechaInicio; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="fechaFinal", type="date") 
    */ 
    private $fechaFinal; 


    /** 
    * @ORM\ManyToOne(targetEntity="Administrador\CursoAcademicoBundle\Entity\CursoAcademico") 
    */ 
    private $cursoAcademico; 


    /** 
    * @ORM\ManyToOne(targetEntity="Administrador\AdjudicacionClaseBundle\Entity\AdjudicacionClase") 
    */ 
    private $adjudicacionClase; 


    /** 
    * @ORM\ManyToOne(targetEntity="Administrador\AdjudicacionNumeroBundle\Entity\AdjudicacionNumero") 
    */ 
    private $adjudicacionNumero; 


    /** 
    * @ORM\ManyToOne(targetEntity="Administrador\AdjudicacionTipoBundle\Entity\AdjudicacionTipo") 
    */ 
    private $adjudicacionTipo; 

...getters and setters... 

這是我的倉庫類:

class AdjudicacionRepository extends EntityRepository { 

public function findAdjudicacionesActuales($cursoAcademicoActual) { 

    $q=$this->createQueryBuilder('c') 
    ->where('c.cursoAcademico_id = :cursoAcademico_id') 
    ->setParameter('cursoAcademico_id', $cursoAcademicoActual) 
    ->getQuery()->getResult(); 

    return $q; 


} 

}

但它不工作,屏幕只是空白,我沒有得到任何SULT。我試過的標準太,像這樣:

public function findAdjudicacionesActuales2($cursoAcademicoActual) { 

    $expr = Criteria::expr(); 
    $criteria = Criteria::create(); 
    $criteria->where($expr->eq("cursoAcademico_id", $cursoAcademicoActual)); 
    return $this->matching($criteria);  

} 

,我也得到:Unrecognized field: cursoAcademico_id

這是在數據庫:

mysql> select * from Adjudicacion; 
+----+-------------+------------+-------------------+----------------------+-----------------------+---------------------+ 
| id | fechaInicio | fechaFinal | cursoAcademico_id | adjudicacionClase_id | adjudicacionNumero_id | adjudicacionTipo_id | 
+----+-------------+------------+-------------------+----------------------+-----------------------+---------------------+ 
| 2 | 2009-01-01 | 2009-01-01 |     7 |     3 |      4 |     3 | 
| 6 | 2009-01-01 | 2009-01-01 |     7 |     3 |      4 |     4 | 
| 7 | 2009-01-01 | 2009-01-01 |     7 |     3 |      5 |     3 | 
| 8 | 2009-01-01 | 2009-01-01 |     7 |     3 |      5 |     4 | 
+----+-------------+------------+-------------------+----------------------+-----------------------+---------------------+ 

有什麼不好?

回答

9

從技術上講,在學說ORM的眼中,cursoAcademico_id字段不存在。它用於創建2個表之間的鏈接來創建對象,但不能在任何情況下使用它。

要做到與給定ID的對象的搜索,你應該使用一個連接並匹配加盟對象喜歡的ID ..

$q=$this->createQueryBuilder('a') 
    // Create builder in 'Adjudicacion' repository so 'a' rather than 'c' 
    ->join('a.cursoAcademico', 'c') 
    // Join 'Adjudicacion' to 'CursoAcademico' 
    ->where('c.id = :cursoAcademico_id') 
    // match id of joined `CursoAcademico` 
    ->setParameter('cursoAcademico_id', $cursoAcademicoActual) 
    ->getQuery()->getResult(); 

return $q; 
相關問題