我第一次尝试使用symphony来创建数据库。
我在Film.php
目录MovieManagerBundle\Entity
和Film.orm.yml
中包含此文件MovieManagerBundle\Resources\config\doctrine
。
当我使用命令php bin/console doctrine:schema:update --dump-sql
时
我有这个错误:
[RuntimeException的]
自动加载器预期类" MovieManagerBundle \ Entity \ Film"在文件中定义" C:\ xampp \ php \ FilmManager \ vendor \ composer /../../ src / MovieManagerBundle \ Entity \ Film.php"。
找到了该文件,但该类不在其中,类名或命名空间可能有拼写错误。
我不明白错误是什么,这是我的代码:
Film.php
<?php
namespace MovieManagerBundle\Entity;
class Movie
{
private $id;
private $title;
private $director;
private $year;
public function __construct($title,$director,$year){
$this->setTitle($title);
$this->setDirector($director);
$this->setYear($year);
}
public function getId(){
return $this->id;
}
public function setId($id){
$this->id = $id;
}
public function getTitle(){
return $this->title;
}
public function setTitle($title){
$this->title = $title;
}
public function getDirector(){
return $this->director;
}
public function setDirector($director){
$this->director = $director;
}
public function getYear(){
return $this->year;
}
public function setYear($year){
$this->year = $year;
}
}
?>
Film.orm.yml
MovieManagerBundle\Entity\Film:
type: entity
table: movie
id:
id:
type: integer
generator:
strategy: AUTO
fields:
title:
type: string
length: 255
nullable: false
column: title
director:
type: string
length: 255
nullable: false
column: director
year:
type: integer
nullable: false
column: year
答案 0 :(得分:2)
您必须将名称Movie
更改为Film
。由于autoloader
找到了您的班级MovieManagerBundle\Entity\Film
,但在class
中您将班级命名为class Movie
。
class Movie
要
class Film
答案 1 :(得分:0)
第一个问题我希望这是一个复制错误,因为:
<<?phpnamespace MovieManagerBundle\Entity;
应该是这样的:
<?php
namespace MovieManagerBundle\Entity;
第二个问题将名称Movie
更改为Film
如果没有复制和粘贴问题或名称问题我认为这是作曲家的问题,请尝试打开composer.json
,因为您的应用程序搜索供应商目录中的实体而不是您的包内,所以我想你的包没有加载。
打开composer.json
文件,然后将autoload
部分编辑为:
"autoload": {
"psr-4": {
"": "src/"
},
"classmap": [
"app/AppKernel.php",
"app/AppCache.php"
]
},
从您的控制台启动后:
composer dump-autoload
清理缓存并重试
答案 2 :(得分:0)
建议
我认为更好的结构是使用 yml 进行路由和注释 实体,特别是当你有大型实体时