Doctrine 没有加载 class MappingException
Doctrine is not loading a class MappingException
我全新安装了 Doctrine ORM
请帮助我一直获取产品 class 的 MappingException
<?php
namespace src;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="product")
*/
class Product{
/**
* @ORM\Column(type="integer", length = 5)
* @ORM\Id
* @ORM\GenerateValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=2, name="product_code")
*/
protected $code;
/**
* @ORM\Column(type="string", length=10, name="product_name")
*/
protected $name;
}
我有一个普通的 bootstrap 文件
<?php
// bootstrap.php
require_once "vendor/autoload.php";
require_once "src/Product.php";
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
$paths = array(__DIR__."/src");
$isDevMode = true;
$dbParams = array(
'driver' => 'pdo_mysql',
'user' => 'root',
'password' => '',
'dbname' => 'myDbName',
);
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create($dbParams, $config);
$theProduct = $entityManager->find("Product", 500);
我有一位作曲家
{
"require": {
"doctrine/orm": "v2.5.10"
},
"autoload": {
"psr-4": {
"src\": "src/"
}
}
}
文件夹结构为
我是运行bootstrap.php
无论我做什么,我总是得到致命错误:未捕获 Doctrine\Common\Persistence\Mapping\MappingException: Class 'Product' 在 D:\projects\pp\vendor\doctrine\common\lib\ 中不存在Doctrine\Common\Persistence\Mapping\MappingException.php 第 96
行
这里有两个问题
1)
createAnnotationMetadataConfiguration 有第 5 个参数,它是布尔值 $useSimpleAnnotationReader。所以如果你想写这样的东西
use Doctrine\ORM\Mapping as ORM
/**
* @ORM\Entity
*/
配置期间第 5 个参数为 false
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode, null, null, false);
否则,如果您不包含映射,并且在前面加上@ORM,它将与
一起正常工作
/**
* @Entity
*/
2)
如果你想为你的实体命名空间,你必须为你的实体添加命名空间到你的配置
$config->addEntityNamespace('', 'src\entity');
第一个参数是一个别名(你可以留空或者在下一条语句的[:]前面添加任何内容),现在你可以调用
$theProduct = $entityManager->find(":Product", 500);
我全新安装了 Doctrine ORM
请帮助我一直获取产品 class 的 MappingException
<?php
namespace src;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="product")
*/
class Product{
/**
* @ORM\Column(type="integer", length = 5)
* @ORM\Id
* @ORM\GenerateValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=2, name="product_code")
*/
protected $code;
/**
* @ORM\Column(type="string", length=10, name="product_name")
*/
protected $name;
}
我有一个普通的 bootstrap 文件
<?php
// bootstrap.php
require_once "vendor/autoload.php";
require_once "src/Product.php";
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
$paths = array(__DIR__."/src");
$isDevMode = true;
$dbParams = array(
'driver' => 'pdo_mysql',
'user' => 'root',
'password' => '',
'dbname' => 'myDbName',
);
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create($dbParams, $config);
$theProduct = $entityManager->find("Product", 500);
我有一位作曲家
{
"require": {
"doctrine/orm": "v2.5.10"
},
"autoload": {
"psr-4": {
"src\": "src/"
}
}
}
文件夹结构为
我是运行bootstrap.php
无论我做什么,我总是得到致命错误:未捕获 Doctrine\Common\Persistence\Mapping\MappingException: Class 'Product' 在 D:\projects\pp\vendor\doctrine\common\lib\ 中不存在Doctrine\Common\Persistence\Mapping\MappingException.php 第 96
行这里有两个问题
1)
createAnnotationMetadataConfiguration 有第 5 个参数,它是布尔值 $useSimpleAnnotationReader。所以如果你想写这样的东西
use Doctrine\ORM\Mapping as ORM
/**
* @ORM\Entity
*/
配置期间第 5 个参数为 false
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode, null, null, false);
否则,如果您不包含映射,并且在前面加上@ORM,它将与
一起正常工作/**
* @Entity
*/
2)
如果你想为你的实体命名空间,你必须为你的实体添加命名空间到你的配置
$config->addEntityNamespace('', 'src\entity');
第一个参数是一个别名(你可以留空或者在下一条语句的[:]前面添加任何内容),现在你可以调用
$theProduct = $entityManager->find(":Product", 500);