2014-04-11 20 views
0

我正在使用ZF2 + Doctrine2的一個小項目。 我有蒙山下面的描述中學說實體:(ZF2 + Doctrine2)Find,FindBy不會返回任何結果或錯誤消息

<?php 

namespace Akplanu\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Exemplaire 
* 
* @ORM\Table(name="exemplaire", indexes={@ORM\Index(name="fk_Exemplaire_Livre1_idx", columns={"Liv_id"}), @ORM\Index(name="fk_Exemplaire_Donateur1_idx", columns={"Don_id"}), @ORM\Index(name="fk_Exemplaire_Origin_1_idx", columns={"Origin_id"}), @ORM\Index(name="fk_Exemplaire_Etat_Livre1_idx", columns={"Etlv_id"})}) 
* @ORM\Entity(repositoryClass="Akplanu\Repository\ExemplaireRepository") 
*/ 
class Exemplaire 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="Expl_id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="Expl_numEntr", type="integer", nullable=false) 
    */ 
    private $numEntre; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="Expl_lieuEdit", type="string", length=45, nullable=false) 
    */ 
    private $lieuEdit; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="Expl_datEdit", type="date", nullable=false) 
    */ 
    private $datEdit; 

    /** 
    * @var boolean 
    * 
    * @ORM\Column(name="Expl_tome", type="integer", nullable=true) 
    */ 
    private $tome; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="Expl_datDon", type="date", nullable=true) 
    */ 
    private $dateDon; 

    /** 
    * @var float 
    * 
    * @ORM\Column(name="Expl_prix", type="float", precision=10, scale=0, nullable=true) 
    */ 
    private $prix; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="Expl_comment", type="text", nullable=true) 
    */ 
    private $comment; 

    /** 
    * @var \Akplanu\Entity\Livre 
    * 
    * @ORM\ManyToOne(targetEntity="Akplanu\Entity\Livre") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="Liv_id", referencedColumnName="Liv_id") 
    * }) 
    */ 
    private $livre; 

    /** 
    * @var \Akplanu\Entity\Donateur 
    * 
    * @ORM\ManyToOne(targetEntity="Akplanu\Entity\Donateur") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="Don_id", referencedColumnName="Don_id", nullable=true) 
    * }) 
    */ 
    private $donateur; 


    /** 
    * @var \Akplanu\Entity\OrigineExemplaire 
    * 
    * @ORM\ManyToOne(targetEntity="Akplanu\Entity\OrigineExemplaire") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="Origin_id", referencedColumnName="Origin_id", nullable=false) 
    * }) 
    */ 
    private $origine; 

    /** 
    * @var \Akplanu\Entity\EtatLivre 
    * 
    * @ORM\ManyToOne(targetEntity="Akplanu\Entity\EtatLivre") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="Etlv_id", referencedColumnName="Etlv_id", nullable=false) 
    * }) 
    */ 
    private $etat; 

    /** 
    * @ORM\Column(name="Expl_datEntree" ,type="date" , nullable=false) 
    */ 
    private $dateEntree; 

    /** 
    * @ORM\Column(name="Expl_estEmprunter" ,type="boolean" , nullable=false) 
    */ 
    private $estEmprunter; 


    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set numEntre 
    * 
    * @param integer $numEntre 
    * @return Exemplaire 
    */ 
    public function setNumEntre($numEntre) 
    { 
     $this->numEntre = $numEntre; 

     return $this; 
    } 

    /** 
    * Get numEntre 
    * 
    * @return integer 
    */ 
    public function getNumEntre() 
    { 
     return $this->numEntre; 
    } 

    /** 
    * Set lieuEdit 
    * 
    * @param string $lieuEdit 
    * @return Exemplaire 
    */ 
    public function setLieuEdit($lieuEdit) 
    { 
     $this->lieuEdit = $lieuEdit; 

     return $this; 
    } 

    /** 
    * Get lieuEdit 
    * 
    * @return string 
    */ 
    public function getLieuEdit() 
    { 
     return $this->lieuEdit; 
    } 

    /** 
    * Set datEdit 
    * 
    * @param \DateTime $datEdit 
    * @return Exemplaire 
    */ 
    public function setDatEdit($datEdit) 
    { 
     $this->datEdit = $datEdit; 

     return $this; 
    } 

    /** 
    * Get datEdit 
    * 
    * @return \DateTime 
    */ 
    public function getDatEdit() 
    { 
     return $this->datEdit; 
    } 

    /** 
    * Set tome 
    * 
    * @param boolean $tome 
    * @return Exemplaire 
    */ 
    public function setTome($tome) 
    { 
     $this->tome = $tome; 

     return $this; 
    } 

    /** 
    * Get tome 
    * 
    * @return boolean 
    */ 
    public function getTome() 
    { 
     return $this->tome; 
    } 

    /** 
    * Set dateDon 
    * 
    * @param \DateTime $dateDon 
    * @return Exemplaire 
    */ 
    public function setDateDon($dateDon) 
    { 
     $this->dateDon = $dateDon; 

     return $this; 
    } 

    /** 
    * Get dateDon 
    * 
    * @return \DateTime 
    */ 
    public function getDateDon() 
    { 
     return $this->dateDon; 
    } 

    /** 
    * Set prix 
    * 
    * @param float $prix 
    * @return Exemplaire 
    */ 
    public function setPrix($prix) 
    { 
     $this->prix = $prix; 

     return $this; 
    } 

    /** 
    * Get prix 
    * 
    * @return float 
    */ 
    public function getPrix() 
    { 
     return $this->prix; 
    } 

    /** 
    * Set comment 
    * 
    * @param string $comment 
    * @return Exemplaire 
    */ 
    public function setComment($comment) 
    { 
     $this->comment = $comment; 

     return $this; 
    } 

    /** 
    * Get comment 
    * 
    * @return string 
    */ 
    public function getComment() 
    { 
     return $this->comment; 
    } 

    /** 
    * Set livre 
    * 
    * @param \Akplanu\Entity\Livre $livre 
    * @return Exemplaire 
    */ 
    public function setLivre(\Akplanu\Entity\Livre $livre) 
    { 
     $this->livre = $livre; 

     return $this; 
    } 

    /** 
    * Get livre 
    * 
    * @return \Akplanu\Entity\Livre 
    */ 
    public function getLivre() 
    { 
     return $this->livre; 
    } 

    /** 
    * Set donateur 
    * 
    * @param \Akplanu\Entity\Donateur $donateur 
    * @return Exemplaire 
    */ 
    public function setDonateur(\Akplanu\Entity\Donateur $donateur) 
    { 
     $this->donateur = $donateur; 

     return $this; 
    } 

    /** 
    * Get donateur 
    * 
    * @return \Akplanu\Entity\Donateur 
    */ 
    public function getDonateur() 
    { 
     return $this->donateur; 
    } 



    /** 
    * Set origine 
    * 
    * @param \Akplanu\Entity\OrigineExemplaire $origine 
    * @return Exemplaire 
    */ 
    public function setOrigine(\Akplanu\Entity\OrigineExemplaire $origine) 
    { 
     $this->origine = $origine; 

     return $this; 
    } 

    /** 
    * Get origine 
    * 
    * @return \Akplanu\Entity\OrigineExemplaire 
    */ 
    public function getOrigine() 
    { 
     return $this->origine; 
    } 

    /** 
    * Set etat 
    * 
    * @param \Akplanu\Entity\EtatLivre $etat 
    * @return Exemplaire 
    */ 
    public function setEtat(\Akplanu\Entity\EtatLivre $etat) 
    { 
     $this->etat = $etat; 

     return $this; 
    } 

    /** 
    * Get etat 
    * 
    * @return \Akplanu\Entity\EtatLivre 
    */ 
    public function getEtat() 
    { 
     return $this->etat; 
    } 


    public function getDateEntree() 
    { 
     return $this->dateEntree; 
    } 

    public function setDateEntree($dateEntree) 
    { 
     $this->dateEntree = $dateEntree; 
    } 
    public function getEstEmprunter() 
    { 
     return $this->estEmprunter; 
    } 

    public function setEstEmprunter($estEmprunter) 
    { 
     $this->estEmprunter = $estEmprunter; 
    } 




} 

並與下面的代碼庫:

<?php 
namespace Akplanu\Repository; 

use Akplanu\Entity\Exemplaire; 

use Doctrine\ORM\EntityRepository; 

class ExemplaireRepository extends EntityRepository 
{ 

    /** 
    * add or update an exemplaire 
    */ 
    public function save(Exemplaire $exemplaire) 
    { 
     $this->getEntityManager()->persist($exemplaire); 
     $this->getEntityManager()->flush(); 
    } 

    /** 
    * delete a list exemplaire base on ids array 
    */ 
    public function delete($idsExemplaire) 
    { 
     $dql = "DELETE FROM Akplanu\Entity\Exemplaire d WHERE d.id IN (:idsExemplaire)"; 
     $query = $this->getEntityManager()->createQuery($dql); 
     $query->setParameter('idsExemplaire',$idsExemplaire); 
     $query->execute(); 
    } 

    /** 
    * find Exemplaire by id 
    */ 
    public function findById($id) 
    { 
     return $this->find((int)$id);     
    } 

    /** 
    * find exemplaire by name 
    */ 
    public function findByNumeroEntree($numeroEntree) 
    { 
     return $this->findBy(array('numeroEntree'=>$numeroEntree),array('numeroEntree'=>'asc')); 
    } 

    /** 
    * retrieve list of all exemplaire 
    */ 
    public function getAll() 
    { 
     return $this->findAll(); 
    } 

    public function getListExemplairesPouvantEtreEmprunter() 
    { 
     $dql = "SELECT e,l FROM Akplanu\Entity\Exemplaire e 
       JOIN e.livre l 
       WITH e.estEmprunter = false"; 
     $query = $this->getEntityManager()->createQuery($dql); 
     return $query->getResult(); 
    } 
} 

?> 

當我通過我在控制器上的服務調用ExemplaireRepository :: findById()方法(通過使用AJAX請求),請求不返回任何結果,即使我編輯方法如下:

/** 
* find Exemplaire by id 
*/ 
public function findById($id) 
{ 

    $dql = "SELECT e,l,d,o,t FROM Akplanu\Entity\Exemplaire e 
      JOIN e.livre l 
      JOIN e.donateur d 
      JOIN e.origine o 
      JOIN e.etat t 
      WHERE e.id=:id"; 
    $query = $this->getEntityManager()->createQuery($dql); 
    $query->setParameter('id', $id); 
    return $query->getResult(); 

} 

在螢火控制檯我有一個wainting IC在比沒有任何錯誤消息無限期顯示,但ExemplaireRepository :: getListExemplairesPouvantEtreEmprunter()運行良好!

有人已經面對這樣的問題嗎?它可能導致哪裏?我該如何解決它。 預先感謝您。

+0

你爲什麼手動創建這個查詢? Doctrine應該爲你優化和構建SQL(包括連接),只需使用'$ repository-> find($ id)'方法。 – AlexP

+0

@AlexP:在findById()方法如下: /** * 找到Exemplaire通過ID */ 公共職能findById($ ID) { 回報$這個 - >找到((INT)的$ id) ; } 並返回$ repository-> find($ id)的reslut,這是因爲$ repository-> find($ id)不工作,我手動嘗試它。 – Mak

回答