Symfony3 doctrine entity inserting objects

uno crea la clase y doctrine la tabla

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

linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable