Symfony 2.8.4:没有为类找到名为“Post.orm.yml”的映射文件

时间:2016-05-11 08:53:45

标签: php symfony orm doctrine-orm

我正在使用Symfony 2.8.4和MySql。 (Java版本:1.8)

我创建了这个类:Post.php

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\HttpFoundation\File\UploadedFile;
/**
 * @ORM\Entity(repositoryClass="AppBundle\Repository\PostRepository")
 * @ORM\Table(name="symfony_demo_post")
 *

 */
class Post
{

    const NUM_ITEMS = 10;

    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string")
     * @Assert\NotBlank()
     */
    private $title;

    /**
     * @ORM\Column(type="string")
     */
    private $slug;


    /**
     * @ORM\Column(type="text")
     * @Assert\NotBlank(message="post.blank_content")
     * @Assert\Length(min = "10", minMessage = "post.too_short_content")
     */
    private $content;

    public function getId()
    {
        return $this->id;
    }

    public function getTitle()
    {
        return $this->title;
    }

    public function setTitle($title)
    {
        $this->title = $title;
    }

    public function getSlug()
    {
        return $this->slug;
    }

    public function setSlug($slug)
    {
        $this->slug = $slug;
    }

    public function getContent()
    {
        return $this->content;
    }

public function setContent($content)
    {
        $this->content = $content;
    }



}

当我尝试通过控制台php app/console doctrine:generate:entities AppBundle:Post生成此实体时 我收到这个错误:

[Doctrine\ORM\Mapping\MappingException]
Class "AppBundle\Entity\Post" is not a valid entity or mapped super class.

在浏览器中我得到:No mapping file found named 'Post.orm.yml' for class  我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

可能是因为你有这种格式的评论:

/**
 * @ORM\Entity(repositoryClass="AppBundle\Repository\PostRepository")
 * @ORM\Table(name="symfony_demo_post")
 *

 */

这应该是

/**
 * @ORM\Entity(repositoryClass="AppBundle\Repository\PostRepository")
 * @ORM\Table(name="symfony_demo_post")
 */

注意空白行......

此外,如果使用控制器生成错误,请记住您必须调用存储库的方式

$postRepo = $em->getRepository('AppBundle:Post');

而不是

$postRepo = $em->getRepository('AppBundle:PostRepository');

这就是我5分钟前发生的事情;)

答案 1 :(得分:0)

您应该将配置中的映射类型设置为“注释”,因为您似乎正在使用它。