Bagaimana saya bisa mencetak kueri Joomla?

14

Misalkan Anda telah membuat kueri dengan 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();

Contoh dari sini: https://docs.joomla.org/Selecting_data_using_JDatabase

Apakah ada perintah untuk mencetak pernyataan kueri (bukan hasil tetapi SQL aktual)?

Mat Kay
sumber
Agar saya dapat membaca kueri sebagai "SELECT * FROM ...."
Mat Kay
1
mengapa tidak menggunakan mode debug?
jdog

Jawaban:

18

Anda perlu mengulang __toString ()

echo($query->__toString());

Anda dapat membaca info lebih lanjut di sini

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

Semoga ini bisa membantu

Piero Marsilio
sumber
Hanya ingin mencatat bahwa ketika menggunakan metode ini, ia membuang kueri dengan awalan Joomla #__.
Lodder
echo (string) $ query;
JProof
9

Anda juga dapat menggunakan replacePrefixfungsi Joomla yang membuang kueri dalam format yang dapat disisipkan langsung ke orang-orang seperti PhpMyAdmin.

Ini sebuah contoh:

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

Akan menampilkan yang berikut:

SELECT `something` FROM `jos_content`
Lodder
sumber
5

Anda juga dapat menggunakan dump()metode asli :echo $query->dump();

Dmitry Rekun
sumber
4

The JDatabaseQuerybenda memiliki __toString()fungsi yang output query sehingga Anda dapat melakukan:

echo $db->getQuery();

Atau jika Anda ingin meneruskannya ke suatu fungsi, Anda dapat secara eksplisit melemparkannya ke string terlebih dahulu:

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

Fitur debug Joomla akan memberi Anda banyak informasi tentang kueri yang dijalankan ketika situs web Anda dimuat.

Klaus Veliu
sumber
0
echo $query;

akan baik-baik saja.

ini memanfaatkan kode ini

echo($query->__toString());
Pengembangan web COBIZ
sumber