15

我正在关注这本书和页面http://symfony.com/doc/current/book/doctrine.html

在阅读本书时,我正在尝试处理产品和类别表的关系,而学说生成命令给了我以下错误。

php app/console doctrine:generate:entities Acme
Generating entities for namespace "Acme"



  [RuntimeException]                                      
  Namespace "Acme" does not contain any mapped entities.  



doctrine:generate:entities [--path="..."] [--no-backup] name

谢谢

4

7 回答 7

20

doctrine:generate:entity

您将创建新实体。

当您手动添加一些属性时

doctrine:generate:entities AcmeDemoBundle:User

您将创建 AcmeDemoBundle 的实体 User 的所有访问器(getter 和 setter)

于 2012-07-13T06:13:19.860 回答
7

如果您的项目(仅?)实体命名空间不正确,也会出现此错误。如果你运行命令

$ php app/console doctrine:generate:entities MyBundle

它会产生错误

[RuntimeException]
Bundle“MyBundle”不包含任何映射实体。

检查更具体的命令....

$ php app/console doctrine:generate:entities MyBundle:MyEntity

看看你是否得到错误:

[RuntimeException]
自动加载器预期类“MyBundle\Entity\MyEntity”将在文件“/path/to/MyBundle/Entity/MyEntity.php”中定义。找到文件但类不在其中,类名或命名空间可能有错字。

如果是这样,那么,错误说明了一切(希望如此),并且需要更正命名空间/类名。希望这对某人有帮助。

于 2015-02-16T17:31:53.207 回答
4

解决方案:

更新 symfony 文件:

composer update

然后创建实体

php bin/console doctrine:generate:entities BackendBundle
于 2017-09-13T20:45:13.733 回答
3

检查 PHP 开始和(可选)结束标签

<?php  

?>

在您的文件中是正确的。

当您从 http://symfony.com/doc/current/book/doctrine.html的教程中复制粘贴时,它们不包括在内

我被困在同样的问题上。看完这篇文章后,我开始想知道为什么语法突出显示被破坏了,并发现开始和结束标签丢失了。包含标签时错误消失了。

于 2014-09-27T16:00:57.327 回答
2

在书中http://symfony.com/doc/current/book/doctrine.html实体 Porduct 已手动创建。您将代码写入 Product.php。所有关于实体字段的信息都包含在注解中
但实体类别已创建

php app/console doctrine:generate:entity --entity="AcmeStoreBundle:Category" --fields="name:string(255)"

自动生成的实体Caterory.php不包含注释。Symfony 将信息存储在“Acme\StoreBundle\Resources\config\doctrine\Category.orm.yml”中。这就是为什么php app/console doctrine:mapping:info说您只有 1 个映射实体 - 类别。

解决
您可以生成产品实体doctrine:generate:entity

手动将有关产品实体的信息添加到“Acme\StoreBundle\Resources\config\doctrine\Category.orm.yml”

删除“Acme\StoreBundle\Resources\config\doctrine\Category.orm.yml " 并在 Category.php 中使用注释来描述 Category 实体

于 2013-11-14T07:55:54.927 回答
2

我个人遇到了错误,因为我缺少文件夹/目录“实体”。

于 2017-11-02T15:35:51.997 回答
1

这两件事之一可能是问题所在,

  1. 确保您在顶部有一个 use 语句,即

    use Acme\StoreBundle\Entity\Product;

    它不包含在示例中,它们仅显示 use Doctrine\Common\Collections\ArrayCollection;

  2. 指定目标实体时,如果实体位于不同的名称空间中,请始终指定完整的名称空间。例子:

    @ORM\OneToMany(targetEntity="Acme\StoreBundle\Entity\Product", mappedBy="category")

    代替:

    @ORM\OneToMany(targetEntity="Product", mappedBy="category")

    第二个仅在两个实体位于同一命名空间中并且该实体已由use类上方的语句调用时才有效。

于 2012-09-13T01:02:40.167 回答