使用jDataBaseDriver选择Random rows

时间:2018-01-19 21:34:20

标签: php sql joomla

我是JDataBaseDriver的新手...我正在使用SimplePortfolio项目show module。问题是没有Randome oder或后端实现的任何排序控件。所以我决定自己编辑PHP代码。我发现以下与选择相关的行:

public static function getItems($params) {

    $db = JFactory::getDbo();
    $query = $db->getQuery(true);

    $query->select('a.*, a.id AS spsimpleportfolio_item_id , a.tagids AS spsimpleportfolio_tag_id, a.created AS created_on ')
    ->from($db->quoteName('#__spsimpleportfolio_items', 'a'))
    ->where($db->quoteName('a.published') . ' = 1');
    //has category
    if ($params->get('category_id') != '') {
        $query->where($db->qn('a.catid')." = ".$db->quote( $params->get('category_id') ));
    }
    $query->where($db->quoteName('a.access')." IN (" . implode( ',', JFactory::getUser()->getAuthorisedViewLevels() ) . ")")
   ->order($db->quoteName('a.ordering') . ' ASC')
    ->setLimit($params->get('limit', 6));

    $db->setQuery($query);

我搜索后发现我可以使用ORDER BY NEWID()但是我没有用任何语法工作,我可以想象我添加了这个并且我遇到了错误。返回随机排序行的顶部代码的正确编辑是什么?

1 个答案:

答案 0 :(得分:0)

而不是这一行

->order($db->quoteName('a.ordering') . ' ASC')

使用此选项以随机顺序获取项目

->order('RAND()')

如果您想按创建的新商品ID订购。它应该是

->order($db->quoteName('a.id') . ' DESC')