Question

Je ne parviens pas à exécuter une doctrine DQL requête. Ceci est l'erreur qu'il me donne.

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

Mon apparence de code comme ceci:

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

Où $ id est le session_id actuel. Mon apparence modèle comme:

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;
}
Était-ce utile?

La solution

Vous avez deux erreurs dans ceci:

  1. Vous devez guillemet vos annotations, à savoir @Column(type="integer") pas @Column(type=integer). Doctrine \ Common \ Annotations de la AnnotationException est levée lorsque votre carte est erroné. Cela n'a rien à voir avec la requête.

  2. Votre requête doit utiliser des instructions préparées, i.e..

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top