我想知道是否有办法用限制和限制启动来回显整个查询。我可以回显行$查询,但我想看看为什么限制不起作用我似乎无法让它显示它发送到数据库的实际查询..这是代码:
$params =& JComponentHelper::getParams('com_news');
$limit = $params->get('x_items', 5);
$limitstart = JRequest::getVar('limitstart', 0);
$query = "SELECT * FROM #__news WHERE published = 1 AND catid = ".$Itemid." ORDER BY date DESC";
$db->setQuery($query, $limitstart, $limit);
$rows = $db->loadObjectList();
$ db-> getQuery($ query,$ limitstart,$ limit);仅显示“SELECT * FROM jos_news WHERE published = 1 AND catid = 8 ORDER BY date DESC”,它在查询结尾处没有LIMIT参数..
任何帮助将不胜感激:)
答案 0 :(得分:20)
JDatabaseQuery对象有一个__toString()
函数,可输出查询,以便您可以执行以下操作:
echo $db->getQuery();
或者如果你想将它传递给一个函数,你可以先将它显式地转换成一个字符串:
var_dump((string)$db->getQuery());
答案 1 :(得分:3)
var_dump($db);die;
在loadObjectList()
电话后执行此操作。在$db
变量中,必须有_sql
属性,这是最后一次执行的查询。
答案 2 :(得分:0)
同意之前的答案,但是......如果你正在开发自己的组件,因为我经常想知道究竟是什么执行,这是一个简单的解决方案:
在你的模特中放置:
$ db = JFactory :: getDBO(); echo $ db-> getQuery();
你想知道查询的地方......不要把它放在(例如)你的视图中,因为它可能在此期间通过执行方式加载了一些其他下拉列表......
例如:
对于列表视图,将它放在foreach之前($ items ...在模型的公共函数getItems()中。 在form- / item-view中,将它放在受保护函数loadFormData()/ public function getItem($ pk = null)中返回$ data / return $项之前
希望这会有所帮助......
答案 3 :(得分:0)