Come posso compilare i criteri di propulsione per cancellare SQL? Ho provato $ criteria-> toString(); ma questo non è quello che mi aspettavo. Anche io ho provato ModelPeer :: doSelectStmt ($ criteri), ma restituiti SQL prime (parametri richiesti sostituzione)Come compilare i criteri di propulsione su SQL
risposta
Credo che questo sia il modo in cui
$rawSql = BasePeer::createSelectSql($criteria, $params);
Prima di tutto, è importante notare che Propel utilizza PDO con istruzioni preparate, quindi non si otterrà un'istruzione SQL completamente "built-out" in PHP. Usare Criteria-> toString() è un buon inizio, ma siccome Peter menziona molto del lavoro è fatto dal metodo BasePeer :: createSelectSql().
Ecco il modo più completo (da Propel) per vedere ciò che lo SQL sarà simile (con segnaposti) ed i parametri che verranno sostituiti in:
$params = array(); // This will be filled with the parameters
$sql = BasePeer::createSelectSql($criteria, $params);
print "The raw SQL: " . $sql . "\n";
print "The parameters: " . print_r($params, true) . "\n";
Nota che si può ottenere una migliore distanza in miglia da solo registrando le query a livello di database. Naturalmente, se PDO è configurato (o supporta) per utilizzare istruzioni native db preparate, allora si possono ancora vedere segnaposti anche nel db.
Ho aggiunto un 'wordwrap ($ sql)' in modo che sql molto lungo possa adattarsi alla pagina. Stavo convertendo alcune query di Propel su PDO e questo ha funzionato come un fascino. Grazie @Hans L. –
Ho deciso di lavorare. In realtà avevo bisogno del INSERT INTO ... SELECT. I.e - crea SELEZIONA la dichiarazione con i criteri, aggiungi inoltre INSERISCI IN ed esegui.
Quindi ho chiesto a BasePeer di creare sql raw (BasePeer :: createSelectSql), quindi aggiunto INSERT IN avanti. Dato che ho bisogno di inserire i valori dell'istruzione (: p1,: p2, ecc.), Ma il metodo BasePeer :: populateStmtValues è privato (perché?) Ho dovuto copiare il metodo in un altro posto e chiamarlo.
Abbiamo avuto lo stesso problema di recente. Vedi http://groups.google.com/group/propel-development/browse_thread/thread/f56a5a8ee5db3b60
Ora BasePeer :: populateStmtValues () è pubblico dalla versione di propel 1.4 in poi. Questo è attualmente in dev.
prova Ancora più facile:
print($criteria->toString()) ;
- 1. Come partecipare su più criteri, restituendo tutte le combinazioni di entrambi i criteri
- 2. I criteri di ibernazione richiedono più criteri
- 3. Criteri SQL Union a NHibernate
- 4. Come utilizzare i criteri di ricerca gitlab
- 5. Come compilare i binari di Intel Mac su Linux?
- 6. SQL - Dove criteri per trovare i nomi tra AF
- 7. Criteri di filtro SQL nei criteri di join o clausola where che è più efficiente
- 8. I criteri di ordinamento predefiniti di sqlalchemy?
- 9. SQL: più affermazioni con più criteri
- 10. SQL Injection attraverso Hibernate-Criteri & Session.save (oggetto)
- 11. Come compilare: Synergy su mac
- 12. Come applicare i criteri di gruppo di Windows utilizzando .NET?
- 13. Criteri JPA sottoquery su JoinTable
- 14. Compilare Kotlin su JavaScript
- 15. Come compilare usando nasm su MacOSX
- 16. Seleziona su più criteri con XPath
- 17. Sospensione - Criteri di ordinamento per proprietà formula
- 18. Come compilare RarCrack su Mac OSX?
- 19. Come compilare i pacchetti in java?
- 20. Come posso compilare Valgrind su Snow Leopard?
- 21. Come compilare il codice objc su Linux?
- 22. Criteri NHib QueryByExample bloccato con SQL nel mezzo
- 23. Come esaminare i criteri della cache in System.Runtime.Caching.ObjectCache?
- 24. Compilare i file java programmaticamente
- 25. Criteri Grails/GORM "in"
- 26. Compilare per CentOS su Ubuntu
- 27. R intersect data.frame su più criteri
- 28. Hibernate Query vs criteri di prestazione
- 29. Come compilare su più core usando mingw all'interno di QTCreator
- 30. I criteri in ibernazione sono incostanti?
come ho detto prima voglio ottenere SQL chiaro, non prima (come ad esempio "selezionare articolo dove NAME = p1") Credo Propel fornisce tale caratteristica .. –
in quel $ rawSql devo sostituire i parametri: p1,: p2, ecc. Ma in questo modo devo scrivere codice già scritto –
Ecco a cosa serve l'array params. Immagino di non averlo chiarito: fornire i params come array associativo. –