Як я можу роздрукувати запит Joomla?


14

Припустимо, ви створили запит з 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();

Приклад звідси: https://docs.joomla.org/Selecting_data_using_JDatabase

Чи є команда роздрукувати оператор запиту (не результати, а фактичний SQL)?


Так що я можу прочитати запит як "SELECT * FROM ...."
Мат Кей

1
чому б не використовувати режим налагодження?
jdog

Відповіді:


18

вам потрібно відлучити __toString ()

echo($query->__toString());

ви можете подати більше інформації тут

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

Сподіваюся, це допомагає


Хочеться лише зазначити, що при використанні цього методу він скидає запит з префіксом Joomla #__.
Лоджер

echo (рядок) $ запит;
JProof

9

Ви також можете використовувати replacePrefixфункцію Joomla, яка вивантажує запит у форматі, який можна вставити прямо на зразок PhpMyAdmin.

Ось приклад:

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

Виведе наступне:

SELECT `something` FROM `jos_content`


4

JDatabaseQueryОб'єкт має __toString()функцію , яка виводить запит , так що ви можете зробити:

echo $db->getQuery();

Або якщо ви хочете передати його функції, ви можете спочатку передати її в рядок:

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

0

Функція налагодження Joomla надасть вам багато інформації про запити, які виконуються під час завантаження вашого веб-сайту.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.