tutorial - findall symfony 3
GeneraciĆ³n de captadores y definidores de entidades en Symfony/Doctrine ORM (7)
Intenta eliminar esta entidad y regenéralas con el siguiente comando:
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"
Y luego agregar manualmente:
/**
*
* @ORM/ManyToOne(targetEntity="Subategory",inversedBy="articles")
* @ORM/JoinColumn(name="subcategory_id",referencedColumnName="id")
*/
private $subcategory;
Tengo la siguiente entidad ORM Symfony con solo propiedades:
<?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;
}
Quiero generar setters y getters automáticamente, entonces ejecuto el siguiente comando:
app/console doctrine:generate:entities Evr/HomeBundle/Entity/Article
Y cada vez que hago esto, muestra el siguiente mensaje de error:
[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
No sé por qué no genera entidades, ¿hay algún error en la entidad / anotaciones?
Mapeo de importación (desde la base de datos)
_> php bin/console doctrine:mapping:import ''AppBundle/Entity'' yml --path=src/AppBundle/Resources/config/doctrine
Generar entidades a partir del mapeo pero sin captadores y definidores.
_> php bin/console doctrine:mapping:convert annotation ./src
O
Generar entidades a partir del mapeo con captadores y definidores
_> php bin/console doctrine:generate:entities AppBundle/Entity
Pensé que la falta * es una de las soluciones.
Pero en mi caso, al crear la entidad desde el símbolo del sistema, preferí que el formato de configuración fuera YML, en lugar de anotaciones.
Ahora lo que estoy haciendo es dar comandos de mapeo usando anotaciones, así que no está funcionando.
Intente configurar Resources / config / Category.orm.yml como:
AppBundle/Entity/Category:
type: entity
table: null
repositoryClass: AppBundle/Repository/CategoryRepository
oneToMany:
products:
targetEntity: Product
mappedBy: Category
Y cambia los recursos / config / Product.orm.yml como:
AppBundle/Entity/Product:
type: entity
table: null
repositoryClass: AppBundle/Repository/ProductRepository
manyToOne:
category:
targetEntity: Category
inversedBy: products
joinColumn:
name: category_id
referenceColumnName: id
¡Y siento que no es un error sino una mejor comprensión!
Tenga cuidado también con el ORM, para contar para generar captadores / setters:
/**
* @var date
*
* @ORM/Column(name="creation_date", type="date")
*/
Uso:
orm: generar-entidades dest-path
Ejemplo en consola:
doctrine orm:generate-entities --generate-annotations="true" destination_path
Fuente: http://wildlyinaccurate.com/useful-doctrine-2-console-commands/
tratar :
app/console doctrine:generate:entities EvrHomeBundle:Article
Si estás usando Symfony 3.0 o superior, entonces sustituye la aplicación por bin:
bin/console doctrine:generate:entities EvrHomeBundle:Article
Si estás usando Symfony 4+ entonces:
bin/console make:entity --regenerate
php bin/console doctrine:generate:entities AppBundle
Esto generará todos los captadores y configuradores necesarios automáticamente en sus archivos de entidad.
Si quieres ser específico acerca de las tablas, usa esto:
php bin/console doctrine:generate:entities AppBundle:"TABLE_NAME"
Sustituye "TABLE_NAME" con el nombre de tu tabla.