在Symfony2中使用Doctrine映射异常错误

时间:2015-07-22 13:09:35

标签: php symfony orm doctrine-orm

我需要你的帮助,因为这就像我在Symfony 2中遇到映射问题的那一天。

首先,我是Symfony的新手,我只有2周的时间练习该框架。 所以,让我们谈谈我的真正问题。概要很简单,我有一个非常简单的形式,我用来创建一个类别(CD / DVD /书籍等)。通常情况下,我的页面会显示已存在的所有类别,并且我输入了一个新的类别(如BLU-RAY for ie),然后该类别将保存在名为Categorie的数据库中,并带有这些属性(idcategorie = BLU-RAY,idcatalogue = CAT01)

这是正常情况,在我的情况下,我可以列出所有类别的列表但是当我提交表格时,我有一个漂亮的

  

类' Doctrine \ ORM \ EntityRepository'没有在链中找到   配置的命名空间SEBO \ BackOfficeBundle \ Entity

首先是我的控制器

public function categorieAction(Request $request)
{
    $categorie = $this->getDoctrine()
        ->getRepository('SEBOBackOfficeBundle:Categorie');
    $listeCategorie = $categorie->findAll();

    $newCategorie = new Categorie();
    $newCategorie->setIdcatalogue('CAT01');

    $form = $this->createFormBuilder($newCategorie)
        ->add('idcategorie', 'text')
        ->add('Ajouter', 'submit')
        ->getForm();

    $form->handleRequest($request);

    if ($form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->persist($categorie);
        $em->flush();

        $request->getSession()->getFlashBag()->add('notice', 'Catégorie bien enregistrée.');

        return $this->redirect($this->generateUrl('sebo_back_office_categorie', array(
            'listeCategorie' => $listeCategorie,
            'form' => $form->createView(),
        )));
    }

    $content = $this->get('templating')->render('SEBOBackOfficeBundle:Advert:categorie.html.twig', array(
        'listeCategorie' => $listeCategorie,
        'form' => $form->createView()
    ));
    return new Response($content);
}

这是我的类Categorie.php

namespace SEBO\BackOfficeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* Categorie
*
* @ORM\Table(name="categorie", indexes={@ORM\Index(name="FK_Catalogue_IdCatalogue", columns={"IdCatalogue"})})
* @ORM\Entity
*/
class Categorie
{
/**
 * @var string
 *
 * @ORM\Column(name="IdCategorie", type="string", length=40, nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $idcategorie;

/**
 * @var \Catalogue
 *
 * @ORM\ManyToOne(targetEntity="Catalogue")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="IdCatalogue", referencedColumnName="IdCatalogue")
 * })
 */
private $idcatalogue;



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

/**
 * Set idcatalogue
 *
 * @param string $idcatalogue
 * @return Categorie
 */
public function setIdcatalogue($idcatalogue)
{
    $this->idcatalogue = $idcatalogue;

    return $this;
}

/**
 * Set idcategorie
 *
 * @param string $idcategorie
 * @return Categorie
 */
public function idcategorie($idcategorie)
{
    $this->idcategorie = $idcategorie;

    return $this;
}

/**
 * Get idcatalogue
 *
 * @return \SEBO\BackOfficeBundle\Entity\Catalogue 
 */
public function getIdcatalogue()
{
    return $this->idcatalogue;
}
}

那是我的分类的Doctrine / ORM xml文件。

<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
  <entity name="Categorie" table="categorie">
    <indexes>
      <index name="FK_Catalogue_IdCatalogue" columns="IdCatalogue"/>
    </indexes>
    <id name="idcategorie" type="string" column="IdCategorie" length="40">
      <generator strategy="IDENTITY"/>
    </id>
<many-to-one field="idcatalogue" target-entity="Catalogue">
  <join-columns>
    <join-column name="IdCatalogue" referenced-column-name="IdCatalogue"/>
  </join-columns>
</many-to-one>
 </entity>
</doctrine-mapping>

一切正常,直到我提交,我可以看到我的类别列表,但经过大量的搜索,我仍然无法看到那个类&#39; Doctrine \ ORM \ EntityRepository&#39 ;,我肯定错过了一件事,我希望你会有所帮助。 感谢您将来的回答。

2 个答案:

答案 0 :(得分:0)

在您的实体中,您必须设置:

使用Doctrine \ ORM \ EntityRepository;

此页面上有一个示例:

Databases and Doctrine

答案 1 :(得分:0)

好吧也许是因为我累了,但我试图发送对象$ categorie而不是新创建的$ newCategorie