Ejecutar SQL de forma directa en Doctrine (1.2.4)

Existirán ocasiones en las que necesitemos ejecutar código SQL de forma directa sobre la base de datos, dejando a un lado el DQL que es el lenguaje que utilizamos en Doctrine para comunicarnos mediante él a la base de datos, pero con el uso, nos damos cuenta que no podemos hacer uso de ciertas funcionalidades que el GDBMS nos puede proveer.

Así que haremos algo sencillo, y… recordando que Doctrine utiliza PDO para conectarse a la base de datos, toda la interacción que hagamos será directamente con las clases y métodos proporcionados por PDO, de forma que puedes hechar un vistazo a la documentación de PHP y PDO.

$range = array('seccion'=>4);
$pdo = Doctrine_Manager::getInstance()->getCurrentConnection()->getDbh();
$query = "select a.nombre,a.edad,a.sexo from alumnos a where a.seccion_id = :seccion";
$stmt = $pdo->prepare($query);
$stmt->execute($range);
$result = $stmt->fetchAll();

Probablemente ese fetchAll() les vaya a arrojar un array asociativo, si desean modificar eso, podemos hacerlo mediante las funciones de PDO para ello.

Provecho!!

“PHP Warning “Warning: ob_start(): …”

¿No te ha pasado que de pronto deseas actualizar y te das cuenta que algunas funciones ahora son Deprecated o cambian un poco sus parámetros? La verdad es que sucede muchas veces, y si trabajabas con las versiones 1.x de Symfony, al pasar a PHP 5.4.x tendrás este mensaje de Warning:

PHP Warning “Warning: ob_start(): function '' not found or invalid function name in ...”

Si te ha pasado como a mí, pues simplemente busca el archivo 

lib/vendor/symfony/lib/config/sfApplicationConfiguration.class.php

y en la línea 155 modifica de la siguiente forma:

ob_start(sfConfig::get('sf_compressed') ? 'ob_gzhandler' : null);

Saludos, espero te sirva!

Fuente

Apache+PHP y no te parsea :?

Si no te ha pasado que teniendo instalado Apache, e instalando PHP y sus módulos, y luego el MySQL… que para algunos les suena como a los 12 Trabajos de Hércules, porque en StackOverflow encontrarás un montón de perezosos que sólo viven recetando “Instala XAMPP” o “Instala MAMP”, como que si nacieron porque su padre únicamente presionó un botón “Instalar” en el ombligo de su madre. Y no es que tenga nada en contra de esos proyectos, pero hay gente que tiene problemas y por eso hace preguntas buscando soluciones reales a sus problemas.

Bien, el asunto es, que si tu Apache con PHP instalado no te parsea tus archivos *.php, debes fijarte que en tu archivo http.conf o en alguno de los de configuración de Apache, de alguna forma no falta las siguientes líneas:

###### Enabling parse PHP files
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

Algo sencillo, ¿no crees? pero es todo… buen día 😉

Crear array asociativo y enviarlo por JSON

No sé a ustedes si les ha pasado, pero en PHP estamos algo acostumbrados a trabajar con arrays asociativos, los cuales los podemos transformar a nuestra conveniencia y utilizarlos de manera cómoda, pero lograr esto en otros lenguajes no lo es tanto.

En esta ocasión quería crear un array asociativo en JavaScript, porque se hace fácil agrupar muchas cosas de esta forma, y convertirlo en JSON, de forma que también en PHP se me convierta en un array asociativo.

Sigue leyendo “Crear array asociativo y enviarlo por JSON”

Usando logs para depurar

En algunos casos es algo difícil en Symfony obtener información sobre las variables, arrays y objetos que pasas, para eso una forma que vi interesante, es usar los logs de Symfony que son sencillos de usar.

Si estas en un action puedes escribirlo así:

$this->logMessage('help me!', 'info');

y desde cualquier parte en Symfony utiliza:


sfContext::getInstance()->getLogger()->info('lo que deseo escribir');

En el primer caso el primer parámetro es el mensaje y el segundo el nivel del mensaje. Los niveles existentes son:

emerg, alert, crit, err, warning, notice, info, debug

En el segundo caso el método info() corresponde al nivel de mensaje info, si deseas cambiarlo utiliza el nombre de los otros niveles.

Problema con el routing “Missing Mandatory Parameters”

¿Les ha sucedido alguna vez que tienen una entidad cuya llave primaria no es un atributo llamado “id” y que al usar el sfDoctrineRouteCollection y link_to para crear las rutas les da error?, un error similar a este:

500 | Internal Server Error | InvalidArgumentException

The “/grupo/:id.:sf_format” route has some missing mandatory parameters (:id). Sigue leyendo “Problema con el routing “Missing Mandatory Parameters””