Joomla.it Forum

Non solo Joomla... => Sviluppo => : guardiano 30 Jul 2015, 11:44:06

: query in joomla
: guardiano 30 Jul 2015, 11:44:06
salve,
devo fare una query come questa:
:
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:
:
$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?
: Re:query in joomla
: giovi 30 Jul 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... )
: Re:query in joomla
: guardiano 30 Jul 2015, 11:53:32
penso ci sia qualcosa di sbagliato nella from e forse anche nella where
l'errore comunque lo da nella from
: Re:query in joomla
: giovi 30 Jul 2015, 12:33:54
Permetimi di riproporre la domanda:
qual'è l'errore che restituisce?
: Re:query in joomla
: giovi 30 Jul 2015, 12:36:12
Controlla anche questa riga: manca la dichiarazione dell'array
:
$query -> from($db -> quoteName('#__virtuemart_categories a','#__virtuemart_categories_it_it b','#__virtuemart_category_categories c'));

La query dall'esterno funziona?
: Re:query in joomla
: guardiano 30 Jul 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.
: Re:query in joomla
: giovi 30 Jul 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...