交响乐 3 数据库创建错误



我第一次尝试使用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进行路由和注释 实体,尤其是当您拥有大型实体时

相关内容

  • 没有找到相关文章

最新更新