【问题标题】:Symfony - Doctrine not generating entitySymfony - 学说不生成实体
【发布时间】:2015-11-14 22:11:03
【问题描述】:

我有一个非常原始的问题:

我在我的 Symfony 应用程序中创建了一个实体:

src/AppBundle/Model/Article/Article.php:

<?php

namespace AppBundle\Model\Article;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="articles")
 */
class Article {

    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string $name
     *
     * @ORM\Column(name="name", type="string", length="255", nullable=false)
     */
    private $name;

}

当我输入控制台时:

php app/console doctrine:generate:entities AppBundle

打印出来:

Bundle "AppBundle" does not contain any mapped entities.

当我输入时:

php app/console doctrine:generate:entities AppBundle/Model/Article/Article

打印出来:

Class "AppBundle\Model\Article\Article" is not a valid entity or mapped super class.

有人知道如何解决这个问题吗?

我已经在 stackoverflow 上遵循了一些解决方案,例如更改或关闭缓存/清除缓存/等。但没有一个有效。

谢谢和问候!

【问题讨论】:

    标签: symfony model doctrine entity schema


    【解决方案1】:

    可能 Doctrine 不知道这些映射。 您是否使用生成器创建了此捆绑包?

    在 app/config 中检查您的 config.yml,您应该在以下键结构下有一个条目:

    doctrine:
      orm:
        mappings:
          AppBundle: ~
    

    编辑: 好的,您使用自定义结构。 默认命名空间应如下所示:

    AppBundle\Entity
    

    所以全类名应该是AppBundle\Entity\Article

    如果您想坚持使用自定义映射,请查看configuration docs。

    【讨论】:

    • 我更改了自动映射:映射为真并且工作正常,ty
    【解决方案2】:

    您应该在实体文件夹中添加所有实体,记住实体和模型是不同的概念。您可以创建其他文件夹,例如 Model、Handlers、Managers。另一个重要的事情是不要将数据库与面向对象编程混淆。

    【讨论】:

      【解决方案3】:

      您需要确保不使用Doctrine\Common\Annotations\SimpleAnnotationReader 类。而应该使用Doctrine\Common\Annotations\AnnotationReader。

      简单阅读器不支持@ORM\Annotation,只支持@Annotation。

      【讨论】:

        猜你喜欢
        • 2017-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多