如何解决类不是有效的实体或映射的超类
有一个slim+doctrine项目,实体创建如下:
- Выполняется команда
vendor/bin/doctrine orm:convert-mapping -f --from-database
,获取一个类(文件路径:mappings/)
namespace App\Domain;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="test")
*/
class Test
{
/**
* @ORM\Id()
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
* @var integer
*/
protected $id;
/**
* @ORM\Column(type="string")
* @var string
*/
protected $firstColumn;
/**
* @ORM\Column(type="datetime")
* @var \DateTime
*/
protected $secondColumn;
/**
* @ORM\Column(type="integer",nullable=true)
* @var integer
*/
protected $thirdColumn;
}
2)然后执行命令vendor/bin/doctrine orm:generate-entities src/
并创建如下类:
namespace App\Domain;
/**
* Test
*/
class Test
{
/**
* @var int
*/
private $id;
/**
* @var string
*/
private $firstColumn;
/**
* @var \DateTime
*/
private $secondColumn;
/**
* @var int|null
*/
private $thirdColumn;
/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set firstColumn.
*
* @param string $firstColumn
*
* @return Test
*/
public function setFirstColumn($firstColumn)
{
$this->firstColumn = $firstColumn;
return $this;
}
/**
* Get firstColumn.
*
* @return string
*/
public function getFirstColumn()
{
return $this->firstColumn;
}
/**
* Set secondColumn.
*
* @param \DateTime $secondColumn
*
* @return Test
*/
public function setSecondColumn($secondColumn)
{
$this->secondColumn = $secondColumn;
return $this;
}
/**
* Get secondColumn.
*
* @return \DateTime
*/
public function getSecondColumn()
{
return $this->secondColumn;
}
/**
* Set thirdColumn.
*
* @param int|null $thirdColumn
*
* @return Test
*/
public function setThirdColumn($thirdColumn = null)
{
$this->thirdColumn = $thirdColumn;
return $this;
}
/**
* Get thirdColumn.
*
* @return int|null
*/
public function getThirdColumn()
{
return $this->thirdColumn;
}
}
问题是当你继续使用它时,你会得到一个错误:Class App\Domain\Test is not a valid entity or mapped super class
。
只有将最后一个类变为以下形式时,错误才会消失:
namespace App\Domain;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="test")
*/
class Test
{
/**
* @ORM\Id()
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
* @var integer
*/
private $id;
/**
* @var string
*/
private $firstColumn;
...
}
为什么学说只接受这样一个类并且对前一个发誓,即使它是通过教义的方式以编程方式创建的?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。