我正在尝试使用doctrine将一个简单的对象持久化到数据库中。
相反,我得到字符串(83)"The class 'AppBundle\Entity\User' was not found in the chain configured namespaces "
我做了什么:
user.php的
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="user")
*/
class User
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=100)
*/
private $username;
...
DefaultController.php
...
/**
* @Route("/", name="homepage")
* @param Request $request
* @return Response
*/
public function indexAction(Request $request)
{
$manager = $this->getDoctrine()->getManager();
$user = new User();
$user->setUsername('jiro');
$user->setPassword('fantozzi');
try{
$manager->persist($user);
$manager->flush();
}catch (\Exception $exception){
var_dump($exception->getMessage());
}
return new Response("<h1>It works</h1>");
}
...
config.yml
doctrine:
dbal:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
orm:
auto_generate_proxy_classes: '%kernel.debug%'
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
编辑0:############################################ ###############
我已经在我的本地机器上直接尝试了它,它运行正常 似乎我的码头工作环境遇到了一些麻烦,可能没有正确设置
编辑1:############################################ ##################
我可以确认我的docker环境是否正确。仍然可能以某种方式导致这种情况。另一个细节是我的真机是带有Sierra Os的Mac(我认为这不重要,但你永远不知道)。
经过一番挖掘后,我发现其他人也遇到过这种情况。
Cannot load entity: "class" was not found in the chain configured
Doctrine cannot map entity/repository namespace in chain
长话短说我在app.php中更改了这一行
$ kernel = new AppKernel('prod',false); =&GT; $ kernel = new AppKernel('prod',true);
这将启用“调试模式”。一切都像现在的魅力。显然,“解决方案”感觉很脏,而且只是暂时的。
如果有人知道造成这种行为的原因,请告诉我们。
答案 0 :(得分:0)
通常在链配置的命名空间中找不到“类'您的限定类名'的错误”意味着您遇到了命名空间和路径不匹配的问题。检查您的命名空间或检查该类所在的实际目录并确保它们匹配。
请参阅Symfony error The class XXX was not found in the chain configured namespaces XXX
另外Symfony2 - The class 'X' was not found in the chain configured namespaces
答案 1 :(得分:0)
只需将此行添加到默认控制器即可,
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
但请在作曲家更新之前 生成实体和架构更新