2012-06-30 18 views
16

Ho la seguente chiamata ajaxerrore di sintassi Dottrina con campo denominato "ordine"

var prev_sibling = $(this).prev().attr("value"); 
var next_sibling = $(this).next().attr("value"); 
var order = (prev_sibling + next_sibling)/2; 
var data = {PID:element_id, TGID:parent_id, ORD:order}; 
$.ajax({ 
     type: "POST", 
     data: data, 
     url:"{{ path('v2_pm_patents_dragpatents') }}", 
     cache: false 
}); 

E nella mia azione ho l'ordine e impostare in questo modo

$order = $request->get('ORD'); 
$patent->setOrder($order); 

ma il dare ajax chiamata me segue l'errore

Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order = '750' WHERE id = '0d0c0810-bc75-11e1-96a5-9787dec335c2'' at line 1 (500 Internal Server Error) 

Ricevo correttamente i dati del post e anche la query che mi dà questi record è funzionante e.

Dov'è il problema?

Qualche idea?

Grazie in anticipo

+0

bene non è tanto la chiamata ajax dando l'errore. È un problema SQL. Che aspetto ha la tua mappatura delle dottrine? – MDrollette

+0

@MDrollette Penso che l'ordine sia la parola chiave riservata in mysql e che sia anche il nome della mia colonna. Penso che questa sia la ragione del problema, cosa ne pensi? –

+0

ah, sì, sicuramente. – MDrollette

risposta

43

Il problema è order essere una parola riservata in MySQL. Se si utilizza la dottrina si può dire che per sfuggire parole riservate nella mappatura in questo modo:

/** @Column(name="`order`", type="integer") */ 
private $order; 

http://docs.doctrine-project.org/en/latest/reference/basic-mapping.html#quoting-reserved-words

+0

quindi è meglio fuggire da loro? –

+0

sarebbe sicuramente più pulito per rinominarlo. Ma questo dovrebbe * funzionare * – MDrollette

+0

fammi fare un tentativo informerò la persona interessata per rinominare le colonne ... Grazie :) –

Problemi correlati