J'ai l'entité ORM Symfony suivante avec uniquement des propriétés:
<?php
namespace Evr\HomeBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="ev_article")
* @ORM\Entity
*/
class Article
{
/**
*
* @ORM\Column(name="article_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
*
* @ORM\ManyToOne(targetEntity="Subategory",inversedBy="articles")
* @ORM\JoinColumn(name="subcategory_id",referencedColumnName="id")
*/
private $subcategory;
/**
*
* @ORM\Column(type="string",length=512)
*/
private $title;
/**
*
* @ORM\Column(type="text")
*/
private $content;
/**
*
* @ORM\Column(type="text")
*/
private $exclusive_content;
/**
*
* @ORM\Column(type="date")
*/
private $creation_date;
/**
*
* @ORM\Column(type="integer")
*/
private $views;
/**
*
* @ORM\Column(type="integer")
*/
private $votes;
}
Je veux générer des setters et des getters automatiquement, alors je lance la commande suivante:
app/console doctrine:generate:entities Evr/HomeBundle/Entity/Article
Et chaque fois que je fais cela, le message d'erreur suivant s'affiche:
[Doctrine\ORM\Mapping\MappingException]
Class "Evr\HomeBundle\Entity\Article" 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, quelque chose ne va pas dans l'entité/les annotations?
Essayez de supprimer cette entité et de les régénérer 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"
Et ajoutez ensuite manuellement:
/**
*
* @ORM\ManyToOne(targetEntity="Subategory",inversedBy="articles")
* @ORM\JoinColumn(name="subcategory_id",referencedColumnName="id")
*/
private $subcategory;
essayez:
app/console doctrine:generate:entities EvrHomeBundle:Article
Si vous utilisez symfony 3.0 ou supérieur, remplacez app par bin:
bin/console doctrine:generate:entities EvrHomeBundle:Article
Si vous utilisez symfony 4+, alors:
bin/console make:entity --regenerate
php bin/console doctrine:generate:entities AppBundle
Cela générera automatiquement tous les getters et setters nécessaires dans vos fichiers d'entité.
Si vous voulez être spécifique sur les tables, utilisez ceci:
php bin/console doctrine:generate:entities AppBundle:"TABLE_NAME"
Remplacez "TABLE_NAME" par le nom de votre table.
Attention également à l'ORM, qui compte pour générer des getters/setters:
/**
* @var date
*
* @ORM\Column(name="creation_date", type="date")
*/
Pensé que le manque * est l'une des solutions
Mais dans mon cas, lors de la création de l'entité à partir de la commande Invite, j'ai préféré que le format de configuration soit YML, au lieu d'annotations.
Maintenant, ce que je fais donne des commandes de mappage en utilisant des annotations, donc cela ne fonctionne pas.
Essayez de configurer Resources/config/Category.orm.yml en tant que:
AppBundle\Entity\Category:
type: entity
table: null
repositoryClass: AppBundle\Repository\CategoryRepository
oneToMany:
products:
targetEntity: Product
mappedBy: Category
Et changez le fichier Resources/config/Product.orm.yml comme suit:
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'estime que ce n'est pas un bug mais une meilleure compréhension!
Importation de mappage (depuis la base de données)
_> php bin/console doctrine:mapping:import 'AppBundle\Entity' yml --path=src/AppBundle/Resources/config/doctrine
Générer des Entityes à partir de la cartographie mais sans les accesseurs ni les setters
_> php bin/console doctrine:mapping:convert annotation ./src
OR
Générer des Entityes à partir d'une cartographie avec des accesseurs et des setters
_> php bin/console doctrine:generate:entities AppBundle/Entity
Usage:
orm: générer-entités dest-chemin
Exemple en console:
doctrine orm:generate-entities --generate-annotations="true" destination_path
Source: http://wildlyinaccurate.com/useful-doctrine-2-console-commands/