我正在关注这本书并在http://symfony.com/doc/current/book/doctrine.html
页面上在阅读本书后,我正在努力研究产品和类别表的关系,而doctrine generate命令正在给我以下错误。
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
THX
答案 0 :(得分:19)
使用
doctrine:generate:entity
您将创建新实体。
当你用
手动添加一些属性时doctrine:generate:entities AcmeDemoBundle:User
您将创建AcmeDemoBundle实体User的所有访问者(getter和setter)
答案 1 :(得分:6)
如果您的项目(仅限?)实体的命名空间不正确,也会出现此错误。如果您运行命令
$ php app/console doctrine:generate:entities MyBundle
并产生错误
[RuntimeException的]
捆绑" MyBundle"不包含任何映射实体。
检查更具体的命令......
$ php app/console doctrine:generate:entities MyBundle:MyEntity
看看你是否收到错误:
[RuntimeException的]
自动加载器预期类" MyBundle \ Entity \ MyEntity" 在文件" /path/to/MyBundle/Entity/MyEntity.php"中定义。 找到了该文件,但该类不在其中,类名或 命名空间可能有拼写错误。
如果是这样,那么,错误就会说明问题(希望如此),并且需要更正命名空间/类名。希望这对某人有帮助。
答案 2 :(得分:4)
解决方案:
更新symfony文件:
composer update
然后创建实体
php bin/console doctrine:generate:entities BackendBundle
答案 3 :(得分: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
表示你只有一个映射实体 - 类别。
<强>解决强>
您可以使用doctrine:generate:entity
生成产品实体
或
手动将有关Product实体的信息添加到“Acme \ StoreBundle \ Resources \ config \ doctrine \ Category.orm.yml”中
或
删除“Acme \ StoreBundle \ Resources \ config \ doctrine \ Category.orm.yml”并在Category.php中描述带注释的Category实体
答案 4 :(得分:2)
检查PHP开放和(可选)结束标记
<?php
和
?>
在您的档案中是正确的。
从教程中复制粘贴时,它们不包含 http://symfony.com/doc/current/book/doctrine.html
我遇到了同样的问题。看完这篇文章之后,我开始想知道为什么语法高亮显示被破坏并发现开始和结束标签都丢失了。包含标签时错误消失了。
答案 5 :(得分:2)
我个人有错误,因为我错过了文件夹/目录&#34;实体&#34;。
答案 6 :(得分:1)
这两件事中的一件可能是问题,
确保在顶部有一个use语句,即
use Acme\StoreBundle\Entity\Product;
它不包含在示例中,它们仅显示
use Doctrine\Common\Collections\ArrayCollection;
如果实体位于不同的名称空间中,则指定目标实体时始终指定完整命名空间。 例如:
@ORM\OneToMany(targetEntity="Acme\StoreBundle\Entity\Product", mappedBy="category")
而不是:
@ORM\OneToMany(targetEntity="Product", mappedBy="category")
第二个只有在两个实体位于同一名称空间且该实体已被该类上方的use
语句调用时才有效。