Come posso stampare una query Joomla?


14

Supponiamo di aver creato una query con Joomla.

// Get a db connection.
$db = JFactory::getDbo();

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

// Select all records from the user profile table where key begins with "custom.".
// Order it by the ordering field.
$query->select($db->quoteName(array('user_id', 'profile_key', 'profile_value', 'ordering')));
$query->from($db->quoteName('#__user_profiles'));
$query->where($db->quoteName('profile_key') . ' LIKE '. $db->quote('\'custom.%\''));
$query->order('ordering ASC');

// Reset the query using our newly populated query object.
$db->setQuery($query);

// Load the results as a list of stdClass objects (see later for more options on retrieving data).
$results = $db->loadObjectList();

Esempio da qui: https://docs.joomla.org/Selecting_data_using_JDatabase

Esiste un comando per stampare l'istruzione query (non i risultati ma l'SQL effettivo)?


In modo che io possa leggere la query come "SELEZIONA * DA ...."
Mat Kay,

1
perché non usare la modalità debug?
jdog,

Risposte:



9

Puoi anche usare la replacePrefixfunzione di Joomla che scarica la query in un formato che può essere inserito direttamente in simili a PhpMyAdmin.

Ecco un esempio:

$db = JFactory::getDbo();

$query = $db->getQuery(true);
$query->select($db->quoteName('something'))
      ->from($db->quoteName('#__content')); 
$db->setQuery($query);

// Dump the query
echo $db->replacePrefix((string) $query);

Produrrà quanto segue:

SELECT `something` FROM `jos_content`


4

L' JDatabaseQueryoggetto ha una __toString()funzione che genera la query in modo da poter fare:

echo $db->getQuery();

Oppure, se si desidera passarlo a una funzione, è possibile eseguirne prima il cast esplicito in una stringa:

var_dump((string)$db->getQuery());

0

La funzione di debug di Joomla ti darà molte informazioni sulle query che vengono eseguite quando il tuo sito web viene caricato.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.