Symphony3数据库创建错误

时间:2017-08-10 10:40:39

标签: php symfony doctrine-orm

我第一次尝试使用symphony来创建数据库。 我在Film.php目录MovieManagerBundle\EntityFilm.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

3 个答案:

答案 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 进行路由和注释   实体,特别是当你有大型实体时