Symfony 3错误:加载和声明的类名称之间的大小写不匹配

时间:2016-11-29 00:35:42

标签: php symfony mismatch

我刚收到此错误

  

加载和声明的类名称之间的大小写不匹配: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;

1 个答案:

答案 0 :(得分:1)

我在代码中做了一些更改,因为我看到我的IDE无法区分  Post,PostComment和我的阵列之间或者他自己的补救方法“_POST”。 你可以从上面的错误中看到它基于Post和post之间的犹豫,如果你使用的是最新版本的symfony,请尝试扫描整个项目并更改你的属性或类的名称,信不信由你创造了一些当项目变大时IDE的困难

这就是错误消失的原因:

  • / **

    • @var integer
    • @ORM \多对一(targetEntity = “POST”)
    • @ORM \ JoinColumn(名称= “id_post”,referencedColumnName = “ID”) * / 私人$ idPost;
  • / **

    • @var integer
    • @ORM \多对一(targetEntity = “POST”)
    • @ORM \ JoinColumn(名称= “id_post”,referencedColumnName = “ID”) * / 私人$ idPost;

我没有给出我的实体的认可名称,所以当我基于外键进行任何操作时,IDE将找不到任何引用实体

如果您使用的是旧版symfony,则必须在某些文件的配置中添加一行代码 你可以在这里找到更好的解释:

Symfony2 error : Case mismatch between loaded and declared class names: