show plain database query

This is a bit of a noob question but is there a way to display what e.g. SQL-query C5 makes out of

$db->query("INSERT INTO someTable (bla, blubb) values (?, ?)", $data);

(or any other query)


View Replies: View Best Answer
guythomas replied on at Permalink Reply
You can print the actual sql statements by setting the debug on the database object, like so:

$db= Loader::db();

nerdess replied on at Permalink Reply

echo 'aaa';
$db = Loader::db();
echo 'bbb';

If I add the above code it doesn't get to the second echo anymore and the system stops...if I comment it out it does. So something is wonky with this method!

Also, where would I see the SQL? In some log-file?

When I used to work with Zend_db I was able to use the __toString() method to see the query but that doesn't seem to work in C5... :-/
guythomas replied on at Permalink Reply
Take a look here for more info:

The method I described actually prints the statements to the screen. It looks like there is another method that will put it into a table on your dbase..

I don't know why its not working for you, maybe set the value as TRUE instead of 1? I'm just passing this along from memory, and may have screwed up the syntax.

andrew replied on at Permalink Reply
This has actually changed in the latest version of concrete5. See my other message in this thread. I've updated the docs page just now to make this clearer.
andrew replied on at Permalink Best Answer Reply
Guy was right for versions of concrete5 before 5.5.0 but we changed the syntax a bit. Instead of running

$db = Loader::db();

Just do this instead




to turn off SQL printing.

The reason this doesn't work the same is because in 5.5 and greater the object returned by Loader::db() is actually a different object than the concrete5 generic Database wrapper class.
VonUniGE replied on at Permalink Reply
This has changed in concrete5 version 8. Can you give me the new syntax?

Thank you.
twomoons replied on at Permalink Reply
I would love to know what the syntax for Version 8 is as well.

I love Concrete5, but documentation has been severely lacking as of lately.
kfriendraka replied on at Permalink Reply
Best I've found is:

\Database::get()->getConfiguration()->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger()); pointed me in the right direction.