У меня проблемы с выполнением запроса 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;
}
Здесь две ошибки:
Вы должны заключать аннотации в двойные кавычки, то есть @Column (type = "integer")
не @Column (тип = целое число)
. Doctrine \ Common \ Annotations \ AnnotationException выбрасывается, когда ваше сопоставление неверно. Это не имеет ничего общего с запросом.
В вашем запросе должны использоваться подготовленные операторы, например
$ query = $ em-> createQuery ("SELECT s FROM Base \ Session s WHERE s.session =? 1");
$ query-> setParameter (1, $ id);