在 Symfony2 中使用 Doctrine 映射异常错误
Posted
技术标签:
【中文标题】在 Symfony2 中使用 Doctrine 映射异常错误【英文标题】:Mapping Exception error with Doctrine in Symfony2 【发布时间】:2015-10-12 09:17:30 【问题描述】:我需要你的帮助,因为这就像我在 Symfony 2 中遇到映射问题的一天。
首先,我是 Symfony 的新手,我只有 2 周的时间练习该框架。 那么让我们谈谈我真正的问题。概要很简单,我有一个非常简单的表格,用于创建一个类别(CD/DVD/书籍等)。所以通常情况下,我的页面会显示所有已经存在的类别,然后我输入一个新类别(例如 BLU-RAY 代表 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>
在我提交之前一切正常,我可以看到我的类别列表,但经过大量搜索后,我仍然看不到“Doctrine\ORM\EntityRepository”类是什么,我肯定错过了一个东西,我希望你能帮忙。 感谢您未来的回答。
【问题讨论】:
您是否在您的app/AppKernel.php
中注册了BackOfficeBundle
?
是的,我会这样做,否则我将无法访问我的网址或使用我的表单。
看起来你的一些实体扩展了EntityRepository
类
不,我检查了我的所有实体,但没有一个扩展EntityRepository
类。
【参考方案1】:
在你的实体中,你必须设置:
使用 Doctrine\ORM\EntityRepository;
这个页面上有一个例子:
Databases and Doctrine
【讨论】:
【参考方案2】:好吧,也许是因为我累了,但我试图发送对象 $categorie 而不是我创建的新对象 $newCategorie
【讨论】:
以上是关于在 Symfony2 中使用 Doctrine 映射异常错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Symfony2 中使用 Doctrine DQL 时限制检索的记录数量
如何使用 Doctrine 在 Symfony2 中实现子查询?
Symfony2 / Doctrine2:不要在模式上删除全文索引:更新
Symfony2/Doctrine:如何使用 OneToMany 将实体重新保存为级联新行