Nos vamos a:
\app\config\parameters.yml y especificamos el nombre de nuestra BD y demás datos (el puerto no es necesario)
Entramos en la consola (Windows+R) y CMD.
Nos vamos a Symfony: D:\wamp\www\pruebasymfony y escribimos:
php app/console doctrine:generate:entity
Especificamos el nombre del Bundle al que pertenece y el nombre de la tabla que queremos crear (en este caso Actores), sería:
cineactoresBundle:Actores
El formato será Annotation
Vamos indicando el nombre de los campos (excepto el Id que se mete solo por defecto) de esa nueva tabla así como el tipo (el listado de tipos lo tienes en: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#property-mapping)
Una vez terminado se habrá creado en \src\cine\actoresBundle una nueva carpeta llamada entity que contiene el fichero Actores.php donde está toda la estructura de la tabla (aunque todavía no está creada en el PHPmyAdmin).
Para crearla volvemos a la consola:
php app/console doctrine:schema:create
Una vez creada si quisieramos modificar el fichero Actores.php (por ejemplo eliminando campos o añadiendo campos nuevos con sus correspondientes métodos de get y set) lo haremos a pelo directamente en el fichero y para que esos cambios se reflejen en la BD ejecutamos desde consola:
IMPORTANTE: Cuando editemos el fichero entity (por ejemplo Actores.php) y añadamos un nuevo campo hay que añadir también sus características:
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=40)
*/
private $email;
Para modificarlo desde la consola:
php app/console doctrine:schema:update --force
Si deseamos borrar una tabla de la BD será con drop:
php app/console doctrine:schema:drop --force
----------------------------------------------------------------------------
INSERTAR EN LA TABLA DE LA BD
a) Crearlo en el routing de nuestro Budble
cineactores_insertarActor:
pattern: /insertarActor
defaults: { _controller: cineactoresBundle:Default:insertarActor }
b) En el controller de nuestro Buddle añadir:
use cine\actoresBundle\Entity\Actores; // para trabajar con esa tabla de la BD
Y añadir el correspondiente método:
public function insertarActorAction() {
// Insertar en BD (lo correcto sería desde un formulario no así escrito a pelo)
$actor = new Actores();
$actor->setNombre("James Stewart");
$actor->setAnnoOscar("1940");
$actor->setTituloPelicula("Historias de philadelphia");
$em = $this->getDoctrine()->getManager();
$em->persist($actor);
$em->flush();
return $this->redirect($this->generateUrl('cineactores_listadoActores'));// lo sacamos del routing
}
Para ejecutarlo:
http://localhost/pruebasymfony/web/app_dev.php/insertarActor
MOSTRAR EL LISTADO DE ESA TABLA DE LA BD
a) Si no existe en el routing de ese Bundle crearlo.
b) En el controller de ese Buddle añadir:
public function listadoActoresAction() {
$repository = $this->getDoctrine()->getRepository('cineactoresBundle:Actores');
$actores = $repository->findAll();
return $this->render('cineactoresBundle:Default:listadoActores.html.twig', array('actores' => $actores)); // que se vaya a esa vista
}
// Para mostrar el de un registro en concreto por su id:
public function showActorAction($id) {
$repository = $this->getDoctrine()->getRepository('cineactoresBundle:Actores');
$actor = $repository->find($id);
return $this->render('cineactoresBundle:Default:showActor.html.twig', array('actor' => $actor));
}
No hay comentarios:
Publicar un comentario