Symfony 3 error : Case mismatch between loaded and declared class names
Symfony 3 error : Case mismatch between loaded and declared class names
我刚收到这个错误
Case mismatch between loaded and declared class names: MyApp\UserBundle\Entity\post vs MyApp\UserBundle\Entity\Post
我正在使用两个控制器来执行删除和返回旧页面的特定操作
这是我的按钮代码
<a href="{{ path('DeleteComment',{'idc':comment.id}) }}"></a>
<a href="{{ path('DeleteComment',{'idc':comment.id}) }}"> <i
class="icon-trash"></i>Delete</a>
这是我的路由代码:
get_view_post:
path: /blog/get/one/post/{id}/
defaults: { _controller: "MyAppBlogBundle:Blog:getpost" }
DeleteComment:
path: /blog/post/comment/delete/{idc}/
defaults: { _controller: "MyAppBlogBundle:Blog:DeleteComment" }
这是我的控制器代码:
public function DeleteCommentAction($idc)
{
$em = $this->getDoctrine()->getManager();
$comment = $em->getRepository('MyAppUserBundle:PostComment')->find($idc);
$idPost =$comment->getIdPost();
$em->remove($comment);
$em->flush();
return $this->redirectToRoute("get_view_post", array('id' => $idPost));
}
public function getpostAction($id)
{
$user = $this->getUser();
$idu = $user->getId();
$em = $this->getDoctrine()->getManager();
$em1 = $this->getDoctrine()->getManager();
$post = $em->getRepository('MyAppUserBundle:Post')->find($id);
$idPost=$post->getId();
$comment = $em1->getRepository('MyAppUserBundle:PostComment')->findBy(array('idPost' => $idPost));
return $this->render('MyAppBlogBundle::afficherPostAvecComment.html.twig', array('posts' => $post,'comments'=>$comment,'idu'=>$idu));
}
我是这样声明我的实体的:
use MyApp\UserBundle\Entity\Post;
use MyApp\UserBundle\Entity\PostComment;
这是我的实体
namespace MyApp\UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="post")
*/
class Post
{
/**
* @var integer
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
* @ORM\Column(name="titre", type="string", length=100, nullable=false)
*/
private $titre;
/**
* @var string
* @ORM\Column(name="contenu", type="string", length=250, nullable=false)
*/
private $contenu;
/**
* @var \DateTime
* @ORM\Column(name="dateajout", type="datetime", nullable=true)
*/
private $dateajout ;
/**
* @var integer
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumn(name="id_utilisateur",referencedColumnName="id")
*/
private $idUser;
/**
* @var integer
* @ORM\Column(name="nbLike", type="integer", nullable=true)
*/
private $nbLike =0;
/**
* @var integer
* @ORM\Column(name="nbDislike", type="integer", nullable=true)
*/
private $nbDislike=0;
/**
* @var integer
* @ORM\Column(name="nbSignal", type="integer", nullable=true)
*/
private $nbSignal=0;
我对我的代码做了一些修改,我发现我的 IDE 无法区分
在Post、Post评论和我的数组post或者还有他自己的调理方法_POST
之间。
你可以从上面的错误中看出它是基于 Post 和 post 之间的犹豫,如果你使用的是最新版本的 Symfony,请尝试扫描你的整个项目并更改你的属性名称或 类,信不信由你,当您的项目变大时,IDE 会遇到一些困难
错误消失的原因如下:
- 旧
/**
* @var integer
* @ORM\ManyToOne(targetEntity="post")
* @ORM\JoinColumn(name="id_post",referencedColumnName="id")
*/
private $idPost;
- 新
/**
* @var integer
* @ORM\ManyToOne(targetEntity="Post")
* @ORM\JoinColumn(name="id_post",referencedColumnName="id")
*/
private $idPost;
我没有为我的实体提供适当的名称,所以当我基于外键进行任何操作时,IDE 将找不到任何引用实体
如果您使用的是旧版本的 Symfony,则必须在某些文件的配置中添加一行代码
你可以在这里得到更好的解释:
Symfony2 error : Case mismatch between loaded and declared class names:
查看您的 userbundle 文件的文件夹名称。
因为,您在命名空间 **(namespace MyApp\UserBundle\Entity;) 中提到了 UserBunlde,那么,
您的文件夹名称也必须是 UserBundle。
如果你命名为 userBundle 就会出现这样的错误。
我刚收到这个错误
Case mismatch between loaded and declared class names: MyApp\UserBundle\Entity\post vs MyApp\UserBundle\Entity\Post
我正在使用两个控制器来执行删除和返回旧页面的特定操作
这是我的按钮代码
<a href="{{ path('DeleteComment',{'idc':comment.id}) }}"></a>
<a href="{{ path('DeleteComment',{'idc':comment.id}) }}"> <i
class="icon-trash"></i>Delete</a>
这是我的路由代码:
get_view_post:
path: /blog/get/one/post/{id}/
defaults: { _controller: "MyAppBlogBundle:Blog:getpost" }
DeleteComment:
path: /blog/post/comment/delete/{idc}/
defaults: { _controller: "MyAppBlogBundle:Blog:DeleteComment" }
这是我的控制器代码:
public function DeleteCommentAction($idc)
{
$em = $this->getDoctrine()->getManager();
$comment = $em->getRepository('MyAppUserBundle:PostComment')->find($idc);
$idPost =$comment->getIdPost();
$em->remove($comment);
$em->flush();
return $this->redirectToRoute("get_view_post", array('id' => $idPost));
}
public function getpostAction($id)
{
$user = $this->getUser();
$idu = $user->getId();
$em = $this->getDoctrine()->getManager();
$em1 = $this->getDoctrine()->getManager();
$post = $em->getRepository('MyAppUserBundle:Post')->find($id);
$idPost=$post->getId();
$comment = $em1->getRepository('MyAppUserBundle:PostComment')->findBy(array('idPost' => $idPost));
return $this->render('MyAppBlogBundle::afficherPostAvecComment.html.twig', array('posts' => $post,'comments'=>$comment,'idu'=>$idu));
}
我是这样声明我的实体的:
use MyApp\UserBundle\Entity\Post;
use MyApp\UserBundle\Entity\PostComment;
这是我的实体
namespace MyApp\UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="post")
*/
class Post
{
/**
* @var integer
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
* @ORM\Column(name="titre", type="string", length=100, nullable=false)
*/
private $titre;
/**
* @var string
* @ORM\Column(name="contenu", type="string", length=250, nullable=false)
*/
private $contenu;
/**
* @var \DateTime
* @ORM\Column(name="dateajout", type="datetime", nullable=true)
*/
private $dateajout ;
/**
* @var integer
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumn(name="id_utilisateur",referencedColumnName="id")
*/
private $idUser;
/**
* @var integer
* @ORM\Column(name="nbLike", type="integer", nullable=true)
*/
private $nbLike =0;
/**
* @var integer
* @ORM\Column(name="nbDislike", type="integer", nullable=true)
*/
private $nbDislike=0;
/**
* @var integer
* @ORM\Column(name="nbSignal", type="integer", nullable=true)
*/
private $nbSignal=0;
我对我的代码做了一些修改,我发现我的 IDE 无法区分
在Post、Post评论和我的数组post或者还有他自己的调理方法_POST
之间。
你可以从上面的错误中看出它是基于 Post 和 post 之间的犹豫,如果你使用的是最新版本的 Symfony,请尝试扫描你的整个项目并更改你的属性名称或 类,信不信由你,当您的项目变大时,IDE 会遇到一些困难
错误消失的原因如下:
- 旧
/**
* @var integer
* @ORM\ManyToOne(targetEntity="post")
* @ORM\JoinColumn(name="id_post",referencedColumnName="id")
*/
private $idPost;
- 新
/**
* @var integer
* @ORM\ManyToOne(targetEntity="Post")
* @ORM\JoinColumn(name="id_post",referencedColumnName="id")
*/
private $idPost;
我没有为我的实体提供适当的名称,所以当我基于外键进行任何操作时,IDE 将找不到任何引用实体
如果您使用的是旧版本的 Symfony,则必须在某些文件的配置中添加一行代码 你可以在这里得到更好的解释:
Symfony2 error : Case mismatch between loaded and declared class names:
查看您的 userbundle 文件的文件夹名称。 因为,您在命名空间 **(namespace MyApp\UserBundle\Entity;) 中提到了 UserBunlde,那么, 您的文件夹名称也必须是 UserBundle。 如果你命名为 userBundle 就会出现这样的错误。