原则2平原价值预期 [英] Doctrine 2 PlainValue expected

查看:149
本文介绍了原则2平原价值预期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法执行Doctrine DQL查询。这是它给我的错误。

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.

我的代码如下所示:

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

其中$ id是当前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;
}


推荐答案

您有两个错误


  1. 您必须引用您的注释,即@Column(type =integer)而不是@Colunn(type = integer)。当您的Mapping错误时,Doctrine\Common\Annotations\AnnotationException被抛出。这与查询无关。

  2. 您的查询应使用准备好的语句,即

  1. You have to quote your annotations, i.e. @Column(type="integer") not @Colunn(type=integer). Doctrine\Common\Annotations\AnnotationException is thrown when your Mapping is wrong. This has nothing to do with the Query.
  2. 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);

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

这篇关于原则2平原价值预期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆