Publicidad

Doctrine en tu código PHP


Por Alex el 15/02/2021, Comentar el artículo

Comparte este artículo:      




Doctrine es un ORM (Object Relational Mapping) o lo que es lo mismo un mapeador objeto-relacional de la base de datos a código. Esta desarrollado en PHP y aunque se le conoce por estar ligado a Symfony puede utilizarse en cualquier ámbito y código PHP


En este artículo vamos a instalarlo y utilizarlo con código PHP nativo.

La instalación se realizar a través de composer, si no lo tenéis instalado podéis mirarlo aquí Instalar composer en Linux.

Para utilizar composer en un proyecto PHP nos ponemos en el directorio del proyecto, por ejemplo, /home/usuario/proyectos/php-doctrine y dentro creamos un fichero composer.json

{
    "require": {
        "doctrine/orm": "*"
    }
}

Y después ejecutamos composer

composer install

Después de la instalación nos crea un directorio llamado vendor donde esta instalado doctrine.

Para utilizarlo en PHP tenemos que incluir el autoload.php del directorio vendor.


	use Doctrine\ORM\Tools\Setup;
	use Doctrine\ORM\EntityManager;

	require_once "vendor/autoload.php";

	$connectionParams = array(
           ' dbname' => 'PRUEBAS',
           'user' => 'root',
           'password' => 'mysql',
           'host' => 'localhost',
           'driver' => 'pdo_mysql',
	);

	$conn = \Doctrine\DBAL\DriverManager::getConnection( $connectionParams);

	print_r ( $conn);


Si imprimís por pantalla la variable $conn veréis que tiene todos los datos de la conexión.


SELECT


Para ejecutar una consulta a la base de datos podemos utilizar el siguiente código, partimos de la base del código anterior donde hemos creado la conexión

$sql = "SELECT * FROM areas";
$stmt = $conn->query( $sql);

$rows = $stmt->fetchAllAssociative();

print_r ( $rows);

En $rows tenemos todos los registros que devuelve la consulta en un array y después podemos recorrer el array para obtener un dato en particular. Pero también podemos recorrer los registros desde el mismo doctrine de la siguiente forma (select1.php):

while (($row = $stmt->fetchAssociative()) !== false)
{
  echo $row['name'] . "\n";
}

También podemos utilizar prepare staments y parámetros dinámicos, así aumentamos la seguridad en las consultas. (select2.php):

       $domain_id = 2;

	$sql = "SELECT * FROM areas WHERE domain_id = ? And enabled = ?";
	$stmt = $conn->prepare($sql);
	$stmt->bindValue(1, $domain_id);
	$stmt->bindValue(2, 0);
	$stmt->execute();

	$rows = $stmt->fetchAllAssociative();

	print_r ( $rows);

Después podemos mostrar todos los registros con fetchAllAssociative() o recorrerlos con $row = $stmt->fetchAssociative().

DELETE, UPDATE, INSERT


Podemos utilizar la opción anterior para realizar inserts, update y delete creando nuestras propias consultas. En el siguiente ejemplo vemos un insert ( insert.php)

       $domain_id = 2;
	$name = 'HOLA Mundo';

	$sql = "insert into areas(domain_id, name, enabled)  values( ?, ?, ?)";
	$stmt = $conn->prepare( $sql);
	$stmt->bindValue(1, $domain_id);
	$stmt->bindValue(2, $name);
	$stmt->bindValue(3, 0);
	$stmt->execute();

También os dejo el código de update y delete.

       # UPDATE
$name = 'HOLA Mundo2';
	$id = 21;

	$sql = "update areas set name = ? Where id = ?";
	$stmt = $conn->prepare( $sql);
	$stmt->bindValue(1, $name);
	$stmt->bindValue(2, $id);

	$stmt->execute();

        # DELETE
        $id = 21;

	$sql = "delete from areas Where id = ?";
	$stmt = $conn->prepare( $sql);
	$stmt->bindValue(1, $id);

	$stmt->execute();


También podemos utilizar las funciones que proporciona Doctrine para las funciones delete, update e insert:

delete()

$conn->delete( 'areas', array( 'id' => 1));
// DELETE FROM areas WHERE id = ? (1)

update()

$conn->update('areas', array('name' => 'PRUEBAS'), array('id' => 21));
// UPDATE areas (name) VALUES (?) WHERE id = ? (PRUEBAS, 1)

insert()

$conn->insert( 'areas', array( 'name' => 'Pruebas'));
// INSERT INTO areas (name) VALUES (?) (Pruebas)

A continuación os dejo un ejemplo para probar estos métodos, para probar el ejemplo hay que pasarle un parámetro que sera la acción que queráis realizar ejecutando el script de una de las siguientes formas
php example.php insert
php example.php update
php example.php delete

switch ( $argv[1])
	{
		case 'insert':

			$domain_id = 2;
			$name = 'HOLA Mundo';
			$enabled = 0;

			$conn->insert( 'areas', array(
																'name' => $name,
																'domain_id' => $domain_id,
																'enabled' => $enabled,
															));

			break;

		case 'update':

			$conn->update( 'areas', array( 'name' => 'Pruebas010101'), array('id' => 19));

			break;

		case 'delete':

			$conn->delete( 'areas', array( 'id' => 19));

			break;

		default:
			echo "
				usage:\n
				  php example.php insert\n
				  php example.php update\n
				  php example.php delete\n\n


			";
			break;
	}




Podemos concluir que Doctrine en una ORM muy interesante para utilizar en nuestros proyectos de PHP natvio.




Y esto es todo amigos, feliz programming
Saludos
Alex.



Si te ha gustado el artículo compartelo en:      




Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.