Autore Topic: query in joomla  (Letto 1544 volte)

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
query in joomla
« il: 30 Lug 2015, 11:44:06 »
salve,
devo fare una query come questa:
Codice: [Seleziona]
SELECT b.virtuemart_category_id, b.category_name
FROM jos_virtuemart_categories a, jos_virtuemart_categories_it_it b, jos_virtuemart_category_categories c
WHERE a.virtuemart_category_id = b.virtuemart_category_id AND b.virtuemart_category_id = c.category_child_id AND a.published = 1 AND c.category_parent_id = 174
ORDER BY b.category_name

vorrei farla con il metodo suggerito nella documentezione di joomla 3, così ho provato a fare questo:
Codice: [Seleziona]
$db = JFactory::getDBO();

// Create a new query object.
$query = $db -> getQuery(true);

$query -> select($db -> quoteName(array('b.virtuemart_category_id','b.category_name')));
$query -> from($db -> quoteName('#__virtuemart_categories a','#__virtuemart_categories_it_it b','#__virtuemart_category_categories c'));
$query -> where($db -> quoteName('a.virtuemart_category_id') . ' = ' . quoteName('b.virtuemart_category_id') . ' AND ' . quoteName('b.virtuemart_category_id') . ' = ' . quoteName('c.category_child_id') . ' AND ' . quoteName('a.published') . ' = 1 AND ' . quoteName('c.category_parent_id') . ' = ' . $category_id);
$query -> order($db->quoteName('b.category_name') . ' ASC');

$db->setQuery($query);

$results = $db-> loadAssocList();

purtroppo non funziona.
sicuramente mi sfugge qualcosa.

potete aiutarmi?

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:query in joomla
« Risposta #1 il: 30 Lug 2015, 11:48:57 »
Qual'è l'errore che restituisce?

Puoi anche infilare tutta la query nella variabile $query e poi eseguirla con $db->setQuery($query); (che è equivalente a quello che stai già facendo implicitamente con i metodi where, from, ecc... )
« Ultima modifica: 30 Lug 2015, 11:50:50 da giovi »

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:query in joomla
« Risposta #2 il: 30 Lug 2015, 11:53:32 »
penso ci sia qualcosa di sbagliato nella from e forse anche nella where
l'errore comunque lo da nella from

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:query in joomla
« Risposta #3 il: 30 Lug 2015, 12:33:54 »
Permetimi di riproporre la domanda:
qual'è l'errore che restituisce?

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:query in joomla
« Risposta #4 il: 30 Lug 2015, 12:36:12 »
Controlla anche questa riga: manca la dichiarazione dell'array
Codice: [Seleziona]
$query -> from($db -> quoteName('#__virtuemart_categories a','#__virtuemart_categories_it_it b','#__virtuemart_category_categories c'));

La query dall'esterno funziona?

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:query in joomla
« Risposta #5 il: 30 Lug 2015, 12:51:39 »
si la query funziona benissimo.
Purtroppo non ho mai creato una query ad oggetti e non so come devo costruire l'array.
Magari speravo che qualcuno mi traducesse la query nel sistema di joomla 3.
In questo modo potrei capire dove ho sbagliato e quindi come evitare problemi con le query future.
Di solito dagli esempi riesco sempre a capire la tecnica ma questa volta stò avendo problemi.

Nell'attesa comunque ho seguito il tuo suggerimento di mettere tutta la query nella variabile $query per farla esegue nel modo classico.

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:query in joomla
« Risposta #6 il: 30 Lug 2015, 12:56:35 »
la riga del where deve assomigliare alla riga della select (non mettere i valori separati da virgole ma inseriscili in un array)

Ti accorgi dov'è l'errore in base a come joomla ha tradotto la query per cui se non posti il messaggio di errore la vedo dura...

 

Host

Torna su