Générer des Getters D'entités et des Setters en Symfony / Doctrine ORM
j'ai le texte suivant ORM Symfony entité avec seulement propriétés :
<?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;
}
je veux générer des setters et des getters automatiquement, donc j'exécute la commande suivante:
app/console doctrine:generate:entities Evr/HomeBundle/Entity/Article
Et à chaque fois que je fais cela, il affiche le message d'erreur suivant :
[DoctrineORMMappingMappingException]
Class "EvrHomeBundleEntityArticle" is not a valid entity or mapped super
class.
doctrine:generate:entities [--path="..."] [--no-backup] name
Je ne sais pas pourquoi il ne génère pas d'entités, est-ce que quelque chose ne va pas dans l'entité/annotations?
6 réponses
Essayez de supprimer cette entité et les recréer avec la commande suivante:
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"
puis ajouter manuellement:
/**
*
* @ORM\ManyToOne(targetEntity="Subategory",inversedBy="articles")
* @ORM\JoinColumn(name="subcategory_id",referencedColumnName="id")
*/
private $subcategory;
essaie :
app/console doctrine:generate:entities EvrHomeBundle:Article
si vous utilisez symfony 3.0 ou plus alors remplacez app avec bin:
bin/console doctrine:generate:entities EvrHomeBundle:Article
php bin/console doctrine:generate:entities AppBundle
cela générera tous les getters et les setters nécessaires automatiquement dans vos fichiers entity.
Si vous voulez être précis sur les tables, puis utiliser ceci:
php bin/console doctrine:generate:entities AppBundle:"TABLE_NAME"
Remplacer "TABLE_NAME" avec le nom de votre table.
attention aussi à l'ORM, à compter de générer les getters/setters:
/**
* @var date
*
* @ORM\Column(name="creation_date", type="date")
*/
Utilisation:
orm:générer des entités dest-path
Exemple dans la console:
doctrine orm:generate-entities --generate-annotations="true" destination_path
Source:http://wildlyinaccurate.com/useful-doctrine-2-console-commands/
Pensais que les disparus * est l'un de la solution
mais dans mon cas, lors de la création de l'entité à partir de l'invite de commande, j'ai préféré que le Format de Configuration soit YML, au lieu d'Annotations.
maintenant ce que je fais c'est donner des commandes de mappage en utilisant des annotations, donc ça ne marche pas.
essayez de configurer Resources/config / Category.orm.yml:
AppBundle\Entity\Category:
type: entity
table: null
repositoryClass: AppBundle\Repository\CategoryRepository
oneToMany:
products:
targetEntity: Product
mappedBy: Category
et changer les ressources/configuration / Produit.orm.yml:
AppBundle\Entity\Product:
type: entity
table: null
repositoryClass: AppBundle\Repository\ProductRepository
manyToOne:
category:
targetEntity: Category
inversedBy: products
joinColumn:
name: category_id
referenceColumnName: id
Et j'ai l'impression ce n'est pas un insecte mais une meilleure compréhension!