Archivos de Categoría: PHP - Paginas 5

Error 1615 Prepared statement needs to be re-prepared en Laravel 5

En mi servidor de desarrollo no me pasa pero al subir a producción ya me ha pasado más de una vez que me salta el error:

QueryException in Connection.php line 620: SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared (SQL: select * from VISTA)

Normalmente es por alguna vista y por lo que he podido leer es debido al parámetro table_definition_cache en la configuración del servidor MySQL. La solución es añadir el siguiente parámetro options en el fichero de configuración app/config/database.php

'mysql' => [
	'driver'    => 'mysql',
	'host'      => env('DB_HOST', 'localhost'),
	'database'  => env('DB_DATABASE', 'forge'),
	'username'  => env('DB_USERNAME', 'forge'),
	'password'  => env('DB_PASSWORD', ''),
	'charset'   => 'utf8',
	'collation' => 'utf8_unicode_ci',
	'prefix'    => '',
	'strict'    => false,
	'options'   => [
        	\PDO::ATTR_EMULATE_PREPARES => true
    	]
], 

Generar CSV de un webform de Drupal 8

En su dia monte un Drupal 8 que iba sobrado con balanceador de carga y demás historias pero ahora anda saturado porque les monte una mini extranet aprovechando la misma instalación de Drupal, El problema es que ahora el servidor esta petado el pobre y cuando intentan sacar el listado de registros insertados en los webform, se les queda colgado. Así que la solución para salir del paso hasta que amplíen el alojamiento de Amazon es acceder al mysql a pelo y ejecutar esta consulta:

select concat('id;', group_concat(name separator ';') , ';fecha') as data from webform_submission_data where webform_id = 'NOMBRE_WEBFORM' group by sid limit 1
union
select concat(s.sid, ';', group_concat(value separator ';') , ';', from_unixtime(s.created,'%d/%m/%Y %H:%i:%s')) as data
from webform_submission s inner join webform_submission_data d on s.sid = d.sid where s.webform_id = 'NOMBRE_WEBFORM'
group by s.sid

Esto hecho desde consola redirigimos la salida a un fichero y ya tenemos un csv con todos los registros del formulario en cuestión .

Insertar y mostrar fecha con mutador en el modelo de datos con Laravel 5

Lo normal en países castellanoparlantes es que introduzcamos las fechas en formato dd/mm/yyyy pero este formato no es el adecuado para introducirlo en base de datos, lo ideal es insertarlo en base de datos en formato yyyymmdd para que no de error. Para ello en Laravel podemos crear un mutador en el modelo de datos (en este caso el campo sería fecha_recibida):

public function setFechaRecibidaAttribute($value){
   if (($timestamp = strtotime(str_replace("/", "-", $value))) === false){
      $this->attributes['fecha_recibida'] = null;
   } else {
      $this->attributes[' fecha_recibida'] = date('Ymd', $timestamp) ;
   }
}

Igualmente cuando vayamos a mostrarlo el valor querremos que este en formato dd/mm/YYYY por lo que podremos crear otro mutador:

public function getFechaRecibidaAttribute($value){
   return date('d/m/Y', strtotime($value));
}