教义。 Class XXX 不是有效实体或映射的超级 class
Doctrine. Class XXX is not a valid entity or mapped super class
我正在尝试用 Doctrine 做我的第一个 DAO 来做一个列表方法。我的实体 class 是 /src/model/dto 文件夹中的 Canales.php
namespace model\dto;
use Doctrine\ORM\Mapping as ORM;
/**
* Canales
*
* @ORM\Table(name="Canales")
* @ORM\Entity
*/
class Canales
{
/**
* @var string
*
* @ORM\Column(name="Nombre", type="string", length=255, nullable=false)
*/
private $nombre;
/**
* @var integer
*
* @ORM\Column(name="Id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* Class Constructor
* @param $nombre
* @param $id
*/
public function __construct($nombre, $id)
{
$this->nombre = $nombre;
$this->url = $url;
$this->imagen = $imagen;
$this->ingles = $ingles;
$this->id = $id;
}
/**
* Set nombre
*
* @param string $nombre
* @return Canales
*/
public function setNombre($nombre)
{
$this->nombre = $nombre;
return $this;
}
/**
* Get nombre
*
* @return string
*/
public function getNombre()
{
return $this->nombre;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
这个 class 是使用这些行生成的
vendor/bin/doctrine orm:convert-mapping --from-database xml config/xml/
vendor/bin/doctrine orm:generate-entities --generate-annotations=true --regenerate-entities=true src/
我的道 class(在 /src/model/dao 文件夹中)
class daoGenerico{
private $entityManager;
/**
* Class Constructor
* @param $entityManager
*/
public function __construct()
{
require_once("bootstrap.php");
$this->entityManager = $entityManager;
}
/**
* @return mixed
*/
public function getEntityManager()
{
return $this->entityManager;
}
function showAction(){
$repository = $this->getEntityManager()->getRepository('model\dto\Canales');
//->find($id);
echo "..";
$productos = $repository->findAll();
echo "OK";
if (!$productos) {
throw $this->createNotFoundException(
'No product found'
);
}
else{
var_dump($productos);
}
}
}
我的bootstrap.php
// bootstrap.php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
require_once "vendor/autoload.php";
// Create a simple "default" Doctrine ORM configuration for Annotations
$isDevMode = true;
$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src/model/dto"), $isDevMode);
// database configuration parameters
$conn = array(
'driver' => 'pdo_mysql',
'host' => 'localhost',
'user' => 'root',
'password' => 'root',
'dbname' => 'yoga',
'charset' => 'UTF8',
);
// obtaining the entity manager
$entityManager = EntityManager::create($conn, $config);
和我的 test.php 文件
include_once('./src/model/dao/daoGenerico.php');
$daoGenerico = new daoGenerico();
$daoGenerico->showAction();
composer.json是这个
{
"require": {
"doctrine/orm": "2.4.*"
},
"autoload": {
"psr-0": {"": "src/"}
}
}
我执行的时候出现这个错误
致命错误:/Applications/MAMP/htdocs/yoga/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException 中的消息 'Class "model\dto\Canales" is not a valid entity or mapped super class.' 未捕获异常 'Doctrine\ORM\Mapping\MappingException'。php:336
我在 Whosebug 中尝试了一些类似的问题,但没有结果。有什么想法或建议吗?
我已经解决了我的问题。我不得不更改我的 bootstrap.php,这一行
$config = Setup::createAnnotationMetadataConfiguration(array(DIR."/src/model/dto"), $isDevMode, null, null, false);
我正在尝试用 Doctrine 做我的第一个 DAO 来做一个列表方法。我的实体 class 是 /src/model/dto 文件夹中的 Canales.php
namespace model\dto;
use Doctrine\ORM\Mapping as ORM;
/**
* Canales
*
* @ORM\Table(name="Canales")
* @ORM\Entity
*/
class Canales
{
/**
* @var string
*
* @ORM\Column(name="Nombre", type="string", length=255, nullable=false)
*/
private $nombre;
/**
* @var integer
*
* @ORM\Column(name="Id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* Class Constructor
* @param $nombre
* @param $id
*/
public function __construct($nombre, $id)
{
$this->nombre = $nombre;
$this->url = $url;
$this->imagen = $imagen;
$this->ingles = $ingles;
$this->id = $id;
}
/**
* Set nombre
*
* @param string $nombre
* @return Canales
*/
public function setNombre($nombre)
{
$this->nombre = $nombre;
return $this;
}
/**
* Get nombre
*
* @return string
*/
public function getNombre()
{
return $this->nombre;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
这个 class 是使用这些行生成的
vendor/bin/doctrine orm:convert-mapping --from-database xml config/xml/
vendor/bin/doctrine orm:generate-entities --generate-annotations=true --regenerate-entities=true src/
我的道 class(在 /src/model/dao 文件夹中)
class daoGenerico{
private $entityManager;
/**
* Class Constructor
* @param $entityManager
*/
public function __construct()
{
require_once("bootstrap.php");
$this->entityManager = $entityManager;
}
/**
* @return mixed
*/
public function getEntityManager()
{
return $this->entityManager;
}
function showAction(){
$repository = $this->getEntityManager()->getRepository('model\dto\Canales');
//->find($id);
echo "..";
$productos = $repository->findAll();
echo "OK";
if (!$productos) {
throw $this->createNotFoundException(
'No product found'
);
}
else{
var_dump($productos);
}
}
}
我的bootstrap.php
// bootstrap.php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
require_once "vendor/autoload.php";
// Create a simple "default" Doctrine ORM configuration for Annotations
$isDevMode = true;
$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src/model/dto"), $isDevMode);
// database configuration parameters
$conn = array(
'driver' => 'pdo_mysql',
'host' => 'localhost',
'user' => 'root',
'password' => 'root',
'dbname' => 'yoga',
'charset' => 'UTF8',
);
// obtaining the entity manager
$entityManager = EntityManager::create($conn, $config);
和我的 test.php 文件
include_once('./src/model/dao/daoGenerico.php');
$daoGenerico = new daoGenerico();
$daoGenerico->showAction();
composer.json是这个
{
"require": {
"doctrine/orm": "2.4.*"
},
"autoload": {
"psr-0": {"": "src/"}
}
}
我执行的时候出现这个错误
致命错误:/Applications/MAMP/htdocs/yoga/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException 中的消息 'Class "model\dto\Canales" is not a valid entity or mapped super class.' 未捕获异常 'Doctrine\ORM\Mapping\MappingException'。php:336
我在 Whosebug 中尝试了一些类似的问题,但没有结果。有什么想法或建议吗?
我已经解决了我的问题。我不得不更改我的 bootstrap.php,这一行
$config = Setup::createAnnotationMetadataConfiguration(array(DIR."/src/model/dto"), $isDevMode, null, null, false);