2010-08-17 18 views
11

मुझे एक डॉक्टर डीक्यूएल क्वेरी निष्पादित करने में समस्या हो रही है। यह वह त्रुटि है जो मुझे देता है।सिद्धांत 2 प्लेनवेल्यू

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

कहाँ $ आईडी वर्तमान 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; 
} 

उत्तर

21

आप दो इस में त्रुटियाँ हैं:

  1. आपके पास अपनी टिप्पणियों को उद्धृत करने के लिए, यानी @Column (प्रकार = "पूर्णांक") नहीं @Colunn (type = पूर्णांक) । जब आपका मैपिंग गलत होता है तो सिद्धांत \ सामान्य \ एनोटेशन \ एनोटेशन अपवाद फेंक दिया जाता है। इस प्रश्न के साथ कुछ लेना देना नहीं है।
  2. आपकी क्वेरी से तैयार बयान का उपयोग करना चाहिए, अर्थात

    $ क्वेरी = $ em-> createQuery ("s से बेस \ सत्र रों कहां s.session = 1 का चयन करें?"); $ क्वेरी-> सेट पैरामीटर (1, $ आईडी);

+0

धन्यवाद। पहली त्रुटि समाधान था। मैं पहले से ही आपका दूसरा बिंदु जानता था। बस कोड की इस पंक्ति के साथ समाप्त हुई कई चीजों की कोशिश की जिसमें मैं तैयार कथन का उपयोग करना भूल गया। आपका बहुत बहुत धन्यवाद! –

+5

# 1 पर एक अतिरिक्त टिप्पणी के रूप में, एकल उद्धरण या तो काम नहीं करते हैं, दोहरे उद्धरण होना चाहिए – Shawn

संबंधित मुद्दे