Wie kann ich eine Joomla-Abfrage ausdrucken?

14

Angenommen, Sie haben eine Abfrage mit Joomla erstellt.

// 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();

Beispiel von hier: https://docs.joomla.org/Selecting_data_using_JDatabase

Gibt es einen Befehl zum Ausdrucken der Abfrageanweisung (nicht das Ergebnis, sondern das tatsächliche SQL)?

Mat Kay
quelle
Damit ich die Abfrage als "SELECT * FROM ...." lesen kann
Mat Kay
1
Warum nicht den Debug-Modus verwenden?
jdog

Antworten:

18

Sie müssen __toString () echo

echo($query->__toString());

Weitere Informationen finden Sie hier

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

Ich hoffe es hilft

Piero Marsilio
quelle
Ich möchte nur darauf hinweisen, dass bei Verwendung dieser Methode die Abfrage mit dem Präfix Joomla gesichert wird #__.
Lodder
echo (string) $ query;
JProof
9

Sie können auch die replacePrefixFunktion von Joomla verwenden, die die Abfrage in einem Format ausgibt, das direkt in PhpMyAdmin eingefügt werden kann.

Hier ist ein Beispiel:

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

Gibt Folgendes aus:

SELECT `something` FROM `jos_content`
Lodder
quelle
5

Sie können auch die native dump()Methode verwenden:echo $query->dump();

Dmitry Rekun
quelle
4

Das JDatabaseQueryObjekt verfügt über eine __toString()Funktion, die die Abfrage ausgibt, sodass Sie Folgendes ausführen können:

echo $db->getQuery();

Oder wenn Sie es an eine Funktion übergeben möchten, können Sie es zuerst explizit in einen String umwandeln:

var_dump((string)$db->getQuery());
Joomler
quelle
0

Mit der Joomla-Debug-Funktion erhalten Sie viele Informationen zu den Abfragen, die beim Laden Ihrer Website ausgeführt werden.

Klaus Veliu
quelle
0
echo $query;

wird gut tun.

Dies nutzt diesen Code

echo($query->__toString());
COBIZ Webentwicklung
quelle