Symfony2自动生成实体错误。

时间:2013-03-22 07:23:13

标签: symfony doctrine-orm

我有两个表news和news_category。为此,我使用symfony命令'doctrine:mapping:convert'创建了两个映射类。这两个文件如下。

  1. news.orm.yml。

    News:
       type: entity
       table: news
       fields:
          newsId:
              id: true
              type: integer
              unsigned: false
              nullable: false
              column: news_id
              generator:
                   strategy: IDENTITY
         newsTitle:
             type: string
             length: 255
             fixed: false
             nullable: false
             column: news_title
         newsDescription:
             type: text
             nullable: false
             column: news_description
         newsStatus:
             type: string
             length: 255
             fixed: false
             nullable: false
             column: news_status
         createdAt:
             type: date
             nullable: false
             column: created_at
        manyToOne:
        category:
             targetEntity: NewsCategory
             cascade: {  }
             mappedBy: null
             inversedBy: null
             joinColumns:
                category_id:
                    referencedColumnName: category_id
             orphanRemoval: false
    lifecycleCallbacks: {  }
    
  2. 2)。 NewCategory.orm.yml

    NewsCategory:
    type: entity
    table: news_category
    fields:
        categoryId:
            id: true
            type: integer
            unsigned: false
            nullable: false
            column: category_id
            generator:
                strategy: IDENTITY
        categoryTitle:
            type: string
            length: 255
            fixed: false
            nullable: false
            column: category_title
        categoryDescription:
            type: text
            nullable: false
            column: category_description
    lifecycleCallbacks: {  }
    

    之后我使用了另一个symfony命令“doctrine:mapping:import”使用此我再次在Entity文件夹News.php和NewsCategory.php中生成两个文件

    如下所示。

    1)news.php

    <?php
    
      namespace Admin\NewsBundle\Entity;
    
      use Doctrine\ORM\Mapping as ORM;
    
     /**
      * News
      *
      * @ORM\Table(name="news")
      * @ORM\Entity
      */
      class News
     {
    /**
     * @var integer
     *
     * @ORM\Column(name="news_id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $newsId;
    
    /**
     * @var string
     *
     * @ORM\Column(name="news_title", type="string", length=255, nullable=false)
     */
    private $newsTitle;
    
    /**
     * @var string
     *
     * @ORM\Column(name="news_description", type="text", nullable=false)
     */
    private $newsDescription;
    
    /**
     * @var string
     *
     * @ORM\Column(name="news_status", type="string", length=255, nullable=false)
     */
    private $newsStatus;
    
    /**
     * @var \DateTime
     *
     * @ORM\Column(name="created_at", type="date", nullable=false)
     */
    private $createdAt;
    
    /**
     * @var \NewsCategory
     *
     * @ORM\ManyToOne(targetEntity="NewsCategory")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="category_id", referencedColumnName="category_id")
     * })
     */
    private $category;
    
    }
    

    并且,2)NewCategory.php

    namespace Admin\NewsBundle\Entity;
    
    use Doctrine\ORM\Mapping as ORM;
    
    /**
     * NewsCategory
     *
     * @ORM\Table(name="news_category")
     * @ORM\Entity
     */
    class NewsCategory
    {
    /**
     * @var integer
     *
     * @ORM\Column(name="category_id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $categoryId;
    
    /**
     * @var string
     *
     * @ORM\Column(name="category_title", type="string", length=255, nullable=false)
     */
    private $categoryTitle;
    
    /**
     * @var string
     *
     * @ORM\Column(name="category_description", type="text", nullable=false)
     */
    private $categoryDescription;
    
    }
    

    现在问题出在我使用“doctrine:generate:entities”创建实体的时候 它给了我以下错误。

    D:\wamp\www\Symfony>php app/console doctrine:generate:entities AdminNewsBundle
    Generating entities for bundle "AdminNewsBundle"
    
      [Doctrine\Common\Persistence\Mapping\MappingException]
      Invalid mapping file 'Admin.NewsBundle.Entity.News.orm.yml' for class 'Admi
      n\NewsBundle\Entity\News'.
    
     doctrine:generate:entities [--path="..."] [--no-backup] name
    

    抱歉英语不好,请帮我解决这个问题,因为我是symfony2的新手

2 个答案:

答案 0 :(得分:3)

尝试:

1) php app/console doctrine:mapping:convert yml ./src/Admin/NewsBundle/Resources/config/doctrine/metadata/orm --from-database --force --namespace="Admin\\NewsBundle\\Entity\\"

for Linux namespace =“Admin \\ NewsBundle \\ Entity \\”,对于Win可能 namespace =“Admin \ NewsBundle \ Entity \\”

观察映射是否正确,具有正确的名称和正确的语法。

2) php app/console doctrine:mapping:import AdminNewsBundle annotation

3) php app/console doctrine:generate:entities AdminNewsBundle

答案 1 :(得分:0)

尝试使用带有naspace的实体名称替换YML的第一行

Admin\NewsBundle\Entity\News:

例如。