Doctrine 2 PlainValue ожидается - PullRequest
12 голосов
/ 17 августа 2010

У меня проблемы с выполнением Doctrine DQL Query. Это ошибка, которую она мне дает.

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 - текущий идентификатор сеанса. Моя модель выглядит так:

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 Ответ

25 голосов
/ 17 августа 2010

В этом есть две ошибки:

  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);

...