我第一次尝试使用symphony来创建数据库。 我有这个 2 个文件Film.php
包含在目录MovieManagerBundleEntity
中,Film.orm.yml
包含在MovieManagerBundleResourcesconfigdoctrine
中。 当我使用命令时php bin/console doctrine:schema:update --dump-sql
我有这个错误:
[运行时异常]
自动加载器期望在文件"C:\xampp\php\FilmManager\vendor\composer/."中定义自动加载器类"MovieManagerBundle\Entity\Film"。/../src/MovieManagerBundle\Entity\Film.php"。
找到文件,但类不在其中,类名或命名空间可能有拼写错误。
我不明白错误是什么,这是我的代码:
电影.php
<?php
namespace MovieManagerBundleEntity;
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
MovieManagerBundleEntityFilm:
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
您必须将名称Movie
更改为Film
。因为autoloader
找到你的类MovieManagerBundleEntityFilm
但在class
你把类名命名为class Movie
。
class Movie
自
class Film
第一个问题我希望这是复制错误,因为:
<<?phpnamespace MovieManagerBundleEntity;
应该是这样的:
<?php
namespace MovieManagerBundleEntity;
第二个问题将名称Movie
更改为Film
如果不是复制和粘贴的问题或名称问题,我认为这是作曲家尝试打开composer.json
的问题,因为您的应用程序搜索供应商目录中的实体而不是捆绑包中的实体,所以我想您的捆绑包没有加载。 打开您的composer.json
文件并将autoload
部分编辑为:
"autoload": {
"psr-4": {
"": "src/"
},
"classmap": [
"app/AppKernel.php",
"app/AppCache.php"
]
},
从控制台启动后:
composer dump-autoload
清理缓存并重试
建议
我认为为了更好的结构,使用YML进行路由和注释 实体,尤其是当您拥有大型实体时