it-swarm-es.tech

¿Cómo puedo imprimir una consulta de Joomla?

Supongamos que ha construido una consulta 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();

Ejemplo de aquí: https://docs.joomla.org/Selecting_data_using_JDatabase

¿Hay un comando para imprimir la declaración de consulta (no los resultados sino el SQL real)?

13
Mat Kay

necesitas hacer eco de __toString ()

echo($query->__toString());

puedes encontrar más información aquí

https://docs.joomla.org/API16:JDatabaseQuery/_toString

Espero eso ayude

17
Piero Marsilio

También puede utilizar la función replacePrefix de Joomla, que descarga la consulta en un formato que se puede insertar directamente en PhpMyAdmin.

Aquí hay un ejemplo:

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

Producirá lo siguiente:

SELECT `something` FROM `jos_content`
9
Lodder

También puede usar el método nativo dump(): echo $query->dump();

5
Dmitry Rekun

El objeto JDatabaseQuery tiene una función __toString() que genera la consulta para que pueda hacer:

echo $db->getQuery();

O si desea pasarlo a una función, puede convertirlo explícitamente en una cadena primero:

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

La función de depuración de Joomla le dará mucha información sobre las consultas que se ejecutan cuando se carga su sitio web.

0
Klaus Veliu
echo $query;

lo haré bien.

esto hace uso de este código

echo($query->__toString());
0