Comment imprimer une requête Joomla?


14

Supposons que vous ayez construit une requête avec 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();

Exemple d'ici: https://docs.joomla.org/Selecting_data_using_JDatabase

Existe-t-il une commande pour imprimer l'instruction de requête (pas les résultats mais le SQL réel)?


Pour que je puisse lire la requête comme "SELECT * FROM ...."
Mat Kay

1
pourquoi ne pas utiliser le mode débogage?
jdog

Réponses:



9

Vous pouvez également utiliser la replacePrefixfonction de Joomla qui vide la requête dans un format qui peut être inséré directement dans PhpMyAdmin.

Voici un exemple:

$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);

Sortira les éléments suivants:

SELECT `something` FROM `jos_content`

5

Vous pouvez également utiliser la dump()méthode native :echo $query->dump();


4

L' JDatabaseQueryobjet a une __toString()fonction qui génère la requête afin que vous puissiez faire:

echo $db->getQuery();

Ou si vous voulez le passer à une fonction, vous pouvez d'abord le convertir explicitement en une chaîne:

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

0

La fonction de débogage de Joomla vous donnera beaucoup d'informations sur les requêtes qui sont exécutées lors du chargement de votre site Web.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.