php - 将 SQL 语句转换为 Joomla 格式时遇到问题

标签 php mysql sql joomla sql-order-by

这是对我有用的 SQL 语句:

SELECT inl_cbsubs_subscriptions.user_id, inl_cbsubs_payment_items.subscription_id, inl_cbsubs_payment_items.stop_date, inl_cbsubs_payment_items.id FROM inl_cbsubs_subscriptions INNER JOIN inl_cbsubs_payment_items ON inl_cbsubs_subscriptions.id=inl_cbsubs_payment_items.subscription_id WHERE inl_cbsubs_subscriptions.user_id=596 ORDER BY id DESC LIMIT 1;

这是我为 Joomla 格式化相同查询的尝试:

$db2 = JFactory::getDbo();
$stopDateQuery = $db2->getQuery(true);

$stopDateQuery->select($db2->quoteName(array('#__cbsubs_subscriptions.user_id', '#__cbsubs_payment_items.subscription_id', '#__cbsubs_payment_items.stop_date')));
$stopDateQuery->from($db2->quoteName('#__cbsubs_subscriptions'));
$stopDateQuery->innerJoin($db->quoteName('#__cbsubs_payment_items') . ' ON #__cbsubs_subscriptions.id = #__cbsubs_payment_items.subscription_id');
$stopDateQuery->where($db2->quoteName('#__cbsubs_subscriptions.user_id')." = ".$db2->quote($myId));
$stopDateQuery->ORDER BY($db2->quoteName('#__cbsubs_payment_items.id'));
$stopDateQuery->DESC LIMIT 1;

我已经测试了 Joomla 格式,如果删除最后两行就可以让它工作:

$stopDateQuery->ORDER BY($db2->quoteName('#__cbsubs_payment_items.id'));
$stopDateQuery->DESC LIMIT 1;

这告诉我该位置存在格式问题。我需要将这些额外的过滤器添加到查询中,那么我哪里出错了?

最佳答案

尝试使用以下内容(适用于 Joomla 3.x+)

$stopDateQuery->order($db2->quoteName('#__cbsubs_payment_items.id') . 'DESC');
$stopDateQuery->setLimit(1);

如果您使用的是 Joomla 2.5,则使用它来设置限制

$db2->setQuery($stopDateQuery,0,1);  

关于php - 将 SQL 语句转换为 Joomla 格式时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22561026/

相关文章:

sql - Oracle SQL 健全性检查 - 加入以获取最近创建的记录

c# - 如何在c#中使用UNION

php - mysql 查询中的正则表达式

php - Mysql Select 带有动态文本字段

mysql - "IN"运算符颠倒了?那可能吗?

c++ - 将 Arduino 变量值插入 MySQL 表

mysql - 创建全新表时出错

php - 大型文本字段的比较分组 - FULLTEXT 搜索、SOLR 或其他?

php - 一个 Eloquent 小组由几个不同的专栏联合

mysql - 根据多行的总分对 mysql 中的用户进行排名