Doctrine 2 PlainValue prévu
-
29-09-2019 - |
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;
}
La solution
Vous avez deux erreurs dans ceci:
-
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. -
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