这是对我有用的 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/