找不到调用Repository方法的映射文件

时间:2013-06-04 12:51:03

标签: symfony orm doctrine-orm

显示例外:

"No mapping file found named '/Users/josedelrio/AimerAgronomia/src/Aimer/PlataformaBundle/Resources/config/doctrine/ExplotacionRepository.orm.yml' for class 'Aimer\PlataformaBundle\Entity\ExplotacionRepository".

当我尝试调用Repository方法时会发生这种情况。我不明白为什么要求该文件。

实体代码:

    #src/AimerPlataformaBundle/Resources/config/doctrine/Explotacion.orm.yml
Aimer\PlataformaBundle\Entity\Explotacion:
  type: entity
  table: Explotacion
  repositoryClass: Aimer\PlataformaBundle\Entity\ExplotacionRepository
  id:
    id:
      type: integer
      generator: { strategy: AUTO }
  fields:
    nombre:
      type: string
      length: 100
    kgCuota:
      type: float
  manyToOne:
    idParroquia:
      targetEntity: Parroquia
      joinColumn:
        name: idParroquia
        referencedColumnName: id
        nullable: false
        unique: FALSE

使用doctrine:generate:entities

生成的代码

Explotacion.php

<?php

namespace Aimer\PlataformaBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Explotacion
 */
class Explotacion
{
/**
 * @var integer
 */
private $id;

/**
 * @var string
 */
private $nombre;

/**
 * @var integer
 */
private $idTecnico;

/**
 * @var integer
 */
private $idServizo;

/**
 * @var string
 */
private $nif;

/**
 * @var string
 */
private $cea;

/**
 * @var string
 */
private $lugar;

/**
 * @var float
 */
private $sau;

/**
 * @var integer
 */
private $numCabezas;

/**
 * @var float
 */
private $haMillo;

/**
 * @var float
 */
private $haHerba;

/**
 * @var float
 */
private $kgCuota;

/**
 * @var \Aimer\PlataformaBundle\Entity\Parroquia
 */
private $idParroquia;


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

/**
 * Set nombre
 *
 * @param string $nombre
 * @return Explotacion
 */
public function setNombre($nombre)
{
    $this->nombre = $nombre;

    return $this;
}

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

/**
 * Set idTecnico
 *
 * @param integer $idTecnico
 * @return Explotacion
 */
public function setIdTecnico($idTecnico)
{
    $this->idTecnico = $idTecnico;

    return $this;
}

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

/**
 * Set idServizo
 *
 * @param integer $idServizo
 * @return Explotacion
 */
public function setIdServizo($idServizo)
{
    $this->idServizo = $idServizo;

    return $this;
}

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

/**
 * Set nif
 *
 * @param string $nif
 * @return Explotacion
 */
public function setNif($nif)
{
    $this->nif = $nif;

    return $this;
}

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

/**
 * Set cea
 *
 * @param string $cea
 * @return Explotacion
 */
public function setCea($cea)
{
    $this->cea = $cea;

    return $this;
}

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

/**
 * Set lugar
 *
 * @param string $lugar
 * @return Explotacion
 */
public function setLugar($lugar)
{
    $this->lugar = $lugar;

    return $this;
}

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

/**
 * Set sau
 *
 * @param float $sau
 * @return Explotacion
 */
public function setSau($sau)
{
    $this->sau = $sau;

    return $this;
}

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

/**
 * Set numCabezas
 *
 * @param integer $numCabezas
 * @return Explotacion
 */
public function setNumCabezas($numCabezas)
{
    $this->numCabezas = $numCabezas;

    return $this;
}

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

/**
 * Set haMillo
 *
 * @param float $haMillo
 * @return Explotacion
 */
public function setHaMillo($haMillo)
{
    $this->haMillo = $haMillo;

    return $this;
}

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

/**
 * Set haHerba
 *
 * @param float $haHerba
 * @return Explotacion
 */
public function setHaHerba($haHerba)
{
    $this->haHerba = $haHerba;

    return $this;
}

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

/**
 * Set kgCuota
 *
 * @param float $kgCuota
 * @return Explotacion
 */
public function setKgCuota($kgCuota)
{
    $this->kgCuota = $kgCuota;

    return $this;
}

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

/**
 * Set idParroquia
 *
 * @param \Aimer\PlataformaBundle\Entity\Parroquia $idParroquia
 * @return Explotacion
 */
public function setIdParroquia(\Aimer\PlataformaBundle\Entity\Parroquia $idParroquia)
{
    $this->idParroquia = $idParroquia;

    return $this;
}

/**
 * Get idParroquia
 *
 * @return \Aimer\PlataformaBundle\Entity\Parroquia 
 */
public function getIdParroquia()
{
    return $this->idParroquia;
}
}

存储库文件

<?php

namespace Aimer\PlataformaBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * ExplotacionRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class ExplotacionRepository extends EntityRepository
{

    public function nomeConcello()
    {
        /*
        $em = $this->getDoctrine()->getManager();
        $query = $em->createQuery(
            'SELECT c.nombre FROM Concello c WHERE c.id = (SELECT idConcello FROM Parroquia WHERE id = :id)'
        )->setParameter('id', 1);

        $concello = $query->getResult();

        return $concello;
        */

     $this->getEntityManager()
            ->createQuery('SELECT c.nombre FROM Concello c WHERE c.id = (SELECT idConcello FROM Parroquia WHERE id = :id)')
            ->setParameter('id', 1)
            ->getResult();

    }
}

这是我尝试在ExplotacionController文件中使用Repository方法的代码:

public function showAction($id)
{
    $em = $this->getDoctrine()->getManager();

    $entity = $em->getRepository('AimerPlataformaBundle:Explotacion')->find($id);

    $nomeConcello = $em->getRepository('AimerPlataformaBundle:ExplotacionRepository')->nomeConcello();

    if (!$entity) {
        throw $this->createNotFoundException('Unable to find Explotacion entity.');
    }

    $deleteForm = $this->createDeleteForm($id);

    return $this->render('AimerPlataformaBundle:Explotacion:show.html.twig', array(
        'entity'      => $entity,
        'delete_form' => $deleteForm->createView(),        
        'nomeConcello'  => $nomeConcello, ));
}

1 个答案:

答案 0 :(得分:1)

您可以通过调用实体来调用存储库类。 像这样

$nomeConcello = $em->getRepository('AimerPlataformaBundle:Explotacion')->nomeConcello();

无需明确呼叫。

see the document