Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Tema Symfony

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 7

TEMA SYMFONY:

 Crear un proyecto:
symfony new NombreProyecto --full
 Arrancar symfony
cd “NombreProyecto”
symfony server:start
 Crear controladores (dentro del proyecto)
php bin/console make:controller NombreControlador
 Gestionar en el proyecto .env
Cambiar db_user:db_password y db_name
 Creamos la base de datos desde la carpeta del proyecto:
php bin/console doctrine:database:create
 Crear las entidades(tablas) para Doctrine:

php bin/console make:entity

nos pedirá nombre de la entidad, campos a agregar (id autoincrementa)

 Actualizar los datos de la tabla en PHPMYADMIN


php bin/console doctrine:schema:update - - force
 Tras crear las tablas y actualizar creamos la tabla:
php bin/console make:nombreTabla

 Ingeniería Inversa, sacar de una base de datos todas sus entidades ( la base de
datos que te selecciona es la del archivo .env) y las introduce en tu proyecto de
NetBeans
o php bin/console doctrine:mapping:import "App\Entity" annotation
--path=src/Entity
 Relacionar tablas:

/**
* @ORM\OneToMany(targetEntity="App\Entity\Animal",
mappedBy="id_cliente")
*/
private $id_animal;
/**
* @var \Cliente
*
* @ORM\ManyToOne(targetEntity="Cliente")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="id_Cliente",
referencedColumnName="id_cliente")
* })
*/
Private $Cliente;

Si no funciona este usamos:


/**
* @ORM\ManyToOne(targetEntity="App\Entity\Animal",
inversedBy="Animal")
*/
private $Cliente;

 Cuando creas las relaciones entre tablas es necesario hacer de nuevo


php bin/console doctrine:schema:update - - force

 En el proyecto Symfony, en apache NetBeans, para relacionar controladores con


tablas y obtener una respuesta es necesario añadir en el controlador:
use Symfony\Component\HttpFoundation\Response;
use App\Entity\Clientes;

Actualizar una tabla con controladores


 Creamos el controlador y manipulamos el archivo que hay en Controller: Ej.
controlador1.php
<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use App\Entity\Cliente;

class Controlador1Controller extends AbstractController {

/**
* @Route("/controlador1/{idCliente}", name="controlador1")
*/
public function index($idCliente) {

$entityManager = $this->getDoctrine()->getManager();
// Nombre de la tabla
$cliente = $entityManager->getRepository(Cliente::class)->find($idCliente);
if (!$cliente) {
throw $this->createNotFoundException(
'No product found for nombre ' . $idCliente
);
}
$cliente->setPassword("hola");
$entityManager->flush();
return new Response('Saved new product with id ');
}

}
En el buscador ponemos: http://127.0.0.1:8000/controlador1/1
Insertar datos en una tabla
<?php
namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use App\Entity\Cliente;

class ControladorInsertarController extends AbstractController


{
/**
* @Route("/ControladorCliente/{nombre}&{password}", name="createCliente")
*/
public function createCliente($nombre,$password): Response
{
$entityManager = $this->getDoctrine()->getManager();

$cliente = new Cliente();


$cliente->setNombre($nombre);
$cliente->setPassword($password);

// tell Doctrine you want to (eventually) save the Product (no queries yet)
$entityManager->persist($cliente);

// actually executes the queries (i.e. the INSERT query)


$entityManager->flush();

return new Response('Saved new product with id ');


}
}
Ponemos en el buscador: http://127.0.0.1:8000/ControladorCliente/sergio&hola
Borrar datos de una tabla
<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use App\Entity\Cliente;

class ControladorBorrarController extends AbstractController {

/**
* @Route("/ControladorBorrar/{idCliente}", name="index")
*/
public function index($idCliente){
$entityManager = $this->getDoctrine()->getManager();
$cliente = $entityManager->getRepository(Cliente::class)->find($idCliente);

if (!$cliente) {
throw $this->createNotFoundException(
'No product found for id ' . $idCliente
);
}
$entityManager->remove($cliente);
$entityManager->flush();
return new Response('Remove new product with id ');
}

}
Meter en el buscador:
http://127.0.0.1:8000/ControladorBorrar/2
Doctrine, DQL
 Dentro del proyecto debes crear:
composer.json que dentro lleva
{
"require": {
"doctrine/orm": "*“
},
"autoload": {
"psr-0": {
"": "src/"
}
}

para crear composer.lock debemos usar el comando composer install


 Join:
Select c.nombre as nombreCliente, t.nombreTienda as nombreTienda from
clientes c.tienda as t.
 Buscar por doctrine
require_once ’Cliente.php’;
require_once ‘bootstrap.php’;
// find() recibe el nombre de la clase y un valor
// y devuelve un cliente
$cli = $entityManager->find(‘Cliente’, ‘Pepe’);
// Si el cliente no existe, devuelve NULL
if (!$cli) {
echo "Cliente no encontrado";
} else {
// con el método get de la clase mostramos sus datos
echo "<p>" . $cli->getTelefono() . "</p>";
 Actualizar por doctrine
require_once ’Cliente.php’;
require_once ‘bootstrap.php’;
$cli = $entityManager->find(‘Cliente’, ‘Pepe’);
// set modificamos los datos
$cli->setTelefono(555555555);
// Y con flush() guardamos los cambios
$entityManager->flush();

También podría gustarte