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.
- URL del código del articulo: https://github.com/depruebas/php-doctrine
- URL documentación de Doctrine: https://www.doctrine-project.org/projects/doctrine-orm/en/current/tutorials/getting-started.html
- URL de manipulación de datos con consultas: Manipulación de datos con doctrine
Y esto es todo amigos, feliz programming
Saludos
Alex.
También puede interesarte:
Configurar Laravel Sail para utilizar un MySql externo existente |
||