en src/AppBundle crear la carpeta Entity
doctrine necesita saber 2 cosas: el nombre de la tabla y las columnas
y se lo informaremos a traves de annotations:
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="genus")
*/
class Genus
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string")
*/
private $name;
}
notar que el type "string " es un tipo de dato de Doctrine el cual al pasarse a MySql se convertira en varchar.
ya podemos empezar a crear la tabla...pero antes debemos crear la base de datos, se puede ingresar los datos en el archivo app/config/parameters.yml
luego, en la raiz de nuestro proyecto abrimos la consola y
ejecutamos la sgt linea de comandos
php bin/console doctrine:database:create
ahora si, podemos crear la tabla
php bin/console doctrine:schema:update --dump-sql
el cual nos mostrara la query que se genera a modo de preview
CREATE TABLE genero (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
si estamos conformes
podemos ejecutar realmente la query asi>
php bin/console doctrine:schema:update --force
insertar datos...semi harcodeados a traves de un action
(antes en nuestra clase Genero debemos agregar set y get para el atibuto name)
luego
en GeneroController.php
creamos, donde usaremos un servicio de doctrine para persistir ese dato
modifiq
/**
* @Route("/genero/new", name="genero_new")
*/
public function newAction(Request $request)
{
$genus = new Genero();
$genus->setName('NuevoGenero'.rand(1, 100));
$entity_manager = $this->getDoctrine()->getManager();
$entity_manager->persist($genus);//indica la accion deseada
$entity_manager->flush();//realiza la accion
return new Response("hecho!");
}
podemos ahora probar, desde nuestro browser llamando a:
http://localhost:8000/genero/new
la barra de debug desaparecio? esto es porque nuestro response no devolvio
una pagina html valida.
modifiquemos un poco nuestra respuesta
si hacemos click en el icono de symfony profiler, nos llevara a una pagina donde nos muestra
llas queries ejecutadas en nuestra llamada al action(son 3)
tip:
se pueden ejecutar queries desde la consola, asi:
php bin/console doctrine:query:sql "SELECT * FROM genero"
lo cual devolvera un arreglo con cada registro en forma de arreglo.
No hay comentarios:
Publicar un comentario