Symfony3错误名称空间不包含任何映射实体

时间:2016-01-21 08:10:44

标签: php doctrine-orm symfony

我尝试在Symfony 3.0.1中生成getter和setter

当我运行命令

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-sanitize.min.js"></script>

<div ng-app="myApp">
  <div ng-controller="MyCtrl">
      <div class="label">Edit mode :</div>
      <textarea ng-model="post1" style="width:100%;" rows="5"></textarea><br />
      <div class="label">Binding mode :</div>
      <div ng-bind-html="post1"></div><br />
      <div class="label">Data will be send to the server :</div>
      <div>{{post1}}</div><br />
      <div class="label">Logs (if needed) :</div>
      <div ng-repeat="d in logs">
        <p>{{($index+1) + ". " + d}}</p>
      </div>
</div>
</div>

我有错误

php bin/console doctrine:generate:entities VendorName/MyBundle/EntityName

哪里出错?

编辑-1:首先使用YAML格式生成实体

编辑-2:我尝试为供应商包生成getter和setter

我也尝试使用命令 php bin / console doctrine:generate:entities VendorNameMyBundle:EntityName 并有另一个错误:

Namespace "VendorName\MyBundle\EntityName" does not contain any mapped entities.

3 个答案:

答案 0 :(得分:2)

正如John Pancoastanswer中指出的另一个问题:

  

在执行代码生成时,Doctrine不支持PSR-4。它与将类名称空间映射到文件系统路径以及PSR-4如何允许不直接映射到文件系统的类/命名空间路径有关。

     

https://github.com/doctrine/DoctrineBundle/issues/282

澄清解决错误消息所需的确切内容;您必须编辑捆绑包的composer.json文件,并更改捆绑包的文件夹结构。

composer.json中将psr-4更改为psr-0

"autoload": {
    "psr-4": { "Acme\\Bundle\\AwesomeBundle\\": "" }
},

为:

"autoload": {
    "psr-0": { "Acme\\Bundle\\AwesomeBundle\\": "" }
},

从以下位置更改捆绑包的文件夹结构:

vendor
 +--acme
     +--awesome-bundle
         |--Controller
         |--Entity

为:

vendor
 +--acme
     +--awesome-bundle
         +--Acme
             +--Bundle
                 +--AwesomeBundle
                     |--Controller
                     |--Entity

以下命令将不再抛出异常:

bin/console doctrine:generate:entities AwesomeBundle

答案 1 :(得分:0)

你有错误的命令,你试图生成实体,但你提供一个实体的类名。对所有实体尝试以下操作:

php bin/console doctrine:generate:entities VendorName/MyBundle

或者如果您只想要一个实体:

php bin/console doctrine:generate:entity VendorName/MyBundle/EntityName

答案 2 :(得分:-1)

Symfony 3.22 with src / AppBundle / Entity / User.php

如果使用ORM添加新字段

**/**
 * @ORM\Column(name="last_login", type="datetimetz")
 */
private $lastLogin;**

只需使用

使用php bin / console doctrine:generate:entities AppBundle

它将检查所有实体r并更新getter和setter

然后使用

php bin / console doctrine:schema:update 来更新数据库

使用

PROD环境中的

php bin / console doctrine:schema:update --force