我正在使用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
我该如何解决这个问题?
答案 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)
您应该将配置中的映射类型设置为“注释”,因为您似乎正在使用它。