【问题标题】:Symfony 2.8.4: No mapping file found named 'Post.orm.yml' for classSymfony 2.8.4:找不到名为“Post.orm.yml”的类映射文件
【发布时间】:2016-05-11 08:53:44
【问题描述】:

我将 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 我该如何解决这个问题?

【问题讨论】:

    标签: php symfony orm doctrine-orm


    【解决方案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 分钟前发生的事情;)

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-09
        • 1970-01-01
        • 2013-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        相关资源
        最近更新 更多