I'm having trouble executing a Doctrine DQL Query. This is the error it gives me.
Doctrine\Common\Annotations\AnnotationException: [Syntax Error] Expected PlainValue,
got 'integer' at position 13 in property Base\Session::$lifetime.
My code looks like this:
$query = $em->createQuery("SELECT s FROM Base\Session s WHERE s.session = \"$id\"");
Where $id is the current session_id. My Model looks like:
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;
}
You have two errors in this:
You have to double quote your annotations, i.e.
@Column(type="integer")
not@Column(type=integer)
. Doctrine\Common\Annotations\AnnotationException is thrown when your mapping is wrong. This has nothing to do with the query.Your query should use prepared statements, i.e.
$query = $em->createQuery("SELECT s FROM Base\Session s WHERE s.session = ?1"); $query->setParameter(1, $id);
精彩评论