Генерация геттеров и сеттеров сущностей в Symfony / Doctrine ORM

у меня есть следующий объект ORM Symfony только со свойствами:

<?php

namespace EvrHomeBundleEntity;

use DoctrineORMMapping as ORM;

/**
 * @ORMTable(name="ev_article")
 * @ORMEntity
 */
class Article
{
    /**
     *
     * @ORMColumn(name="article_id", type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * 
     * @ORMManyToOne(targetEntity="Subategory",inversedBy="articles")
     * @ORMJoinColumn(name="subcategory_id",referencedColumnName="id")
     */
    private $subcategory;


    /**
     * 
     * @ORMColumn(type="string",length=512)
     */
    private $title;

    /**
     * 
     * @ORMColumn(type="text")
     */
    private $content;

    /**
     * 
     * @ORMColumn(type="text")
     */
    private $exclusive_content;

    /**
     * 
     * @ORMColumn(type="date")
     */
    private $creation_date;


     /**
     * 
     * @ORMColumn(type="integer")
     */
    private $views;

    /**
     * 
     * @ORMColumn(type="integer")
     */
    private $votes;


}

Я хочу автоматически генерировать сеттеры и геттеры, поэтому я запускаю следующую команду:

app/console doctrine:generate:entities Evr/HomeBundle/Entity/Article

и каждый раз, когда я это делаю, он отображает следующее сообщение об ошибке:

  [DoctrineORMMappingMappingException]
  Class "EvrHomeBundleEntityArticle" is not a valid entity or mapped super
   class.



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

Я не знаю, почему он не генерирует сущности, что-то неправильное в сущности аннотации?

6 ответов


Попробуйте удалить этот объект и восстановить его следующей командой:

php app/console doctrine:generate:entity --entity="EvrHomeBundle:Article" --fields="name:string(255) content:text exclusive_content:text creation_date:date views:integer votes:integer"

а затем добавить вручную:

/**
 * 
 * @ORM\ManyToOne(targetEntity="Subategory",inversedBy="articles")
 * @ORM\JoinColumn(name="subcategory_id",referencedColumnName="id")
 */
private $subcategory;

попробуй :

app/console doctrine:generate:entities EvrHomeBundle:Article

Если вы используете symfony 3.0 или выше, замените приложение на bin:

bin/console doctrine:generate:entities EvrHomeBundle:Article

php bin/console doctrine:generate:entities AppBundle

это автоматически создаст все необходимые геттеры и сеттеры в ваших файлах сущностей.

Если вы хотите быть конкретным о таблицах, то используйте это:

php bin/console doctrine:generate:entities AppBundle:"TABLE_NAME"

заменить "TABLE_NAME" С именем вашей таблицы.


будьте внимательны также к ORM, чтобы быть подсчетом для генерации геттеров/сеттеров:

/**
 * @var date
 *
 * @ORM\Column(name="creation_date", type="date")

 */

использование:

orm: generate-entities dest-path

пример в консоли:

doctrine orm:generate-entities --generate-annotations="true" destination_path

источник:http://wildlyinaccurate.com/useful-doctrine-2-console-commands/


думал, что отсутствует * является одним из решений

но в моем случае при создании сущности из командной строки я предпочел формат конфигурации YML вместо аннотаций.

теперь я даю команды отображения с помощью аннотаций, поэтому он не работает.

попробуйте настроить ресурсы/config/Category.ОЗР.yml as:

AppBundle\Entity\Category:
    type: entity
    table: null
    repositoryClass: AppBundle\Repository\CategoryRepository
    oneToMany:
        products:
            targetEntity: Product
            mappedBy: Category

и измените ресурсы / config / Product.ОЗР.yml as:

AppBundle\Entity\Product:
    type: entity
    table: null
    repositoryClass: AppBundle\Repository\ProductRepository
    manyToOne:
        category:
            targetEntity: Category
            inversedBy: products
            joinColumn:
                name: category_id
                referenceColumnName: id

и я чувствую это не ошибка, а лучшее понимание!