Pregunta

Tengo problemas para la ejecución de una Doctrina DQL consulta. Este es el error que me da.

Doctrine\Common\Annotations\AnnotationException: [Syntax Error] Expected PlainValue, 
got 'integer' at position 13 in property Base\Session::$lifetime.

Mi código es el siguiente:

$query = $em->createQuery("SELECT s FROM Base\Session s WHERE s.session = \"$id\"");

Donde $ id es el session_id actual. Mis miradas modelo como:

namespace Base;

/** @Entity @Table(name="session") */
class Session extends Skeleton {
/**
 * @Id @Column(type="integer")
 * @GeneratedValue(strategy="AUTO")
 */
protected $id;

/** @Column(length=32) */
protected $session;

/** @Column(type=integer) */
protected $lifetime;

/** @Column(type=integer) */
protected $modified;

/** @Column(type="text") */ 
protected $data;
}
¿Fue útil?

Solución

Hay dos errores en este:

  1. Hay que comillas dobles anotaciones, es decir, no @Column(type="integer") @Column(type=integer). Doctrine \ Common \ \ Anotaciones AnnotationException se produce cuando su asignación es incorrecta. Esto no tiene nada que ver con la consulta.

  2. Su consulta debe utilizar declaraciones preparadas, es decir.

    $query = $em->createQuery("SELECT s FROM Base\Session s WHERE s.session = ?1"); $query->setParameter(1, $id);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top