Doctrine 2 PlainValue预计

问题描述 投票:12回答:1

我在执行Doctrine DQL查询时遇到问题。这是它给我的错误。

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。我的模型看起来像:

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;
}
php doctrine doctrine-query
1个回答
25
投票

你有两个错误:

  1. 你必须加倍引用你的注释,即@Column(type="integer")而不是@Column(type=integer)。映射错误时抛出Doctrine \ Common \ Annotations \ AnnotationException。这与查询无关。
  2. 您的查询应使用预准备的陈述,即 $query = $em->createQuery("SELECT s FROM Base\Session s WHERE s.session = ?1"); $query->setParameter(1, $id);
© www.soinside.com 2019 - 2024. All rights reserved.