4

如何使用 joomla 对象构建全文搜索查询。我一直在尝试,但它不起作用

   $db = JFactory::getDBO();
        $query = $db->getQuery(true);
        $query->select('*');
        $query->from('#__unis_subjects AS s');
        $query->join('', '#__unis AS u ON s.university = u.id');
        $query->join('', '#__unis_faculties AS f ON f.id = s.faculty');
        $query->where('MATCH (s.subject) AGAINST ("' . $query . '")');

        if (!$db->query()) {
            throw new Exception($db->getErrorMsg());
        }

        $data = $db->loadObjectList();

        var_dump($query);

结果输出模板配置参数

4

2 回答 2

1

您的表必须使用 ENGINE = MyISAM(而不是 InnoDB)设置,并且您要搜索的列必须设置为 FULLTEXT 索引。

您可以通过“SQL”选项卡在 phpMyAdmin 中轻松地将您的表设置为 MyISAM...

ALTER TABLE `tablename` ENGINE=MYISAM;

在 Joomla 2.5+(也可能是 3+)中,我在查询中作为 where 子句使用...

->where('MATCH ('.$db->quoteName('columnname').') AGAINST ('.$db->quote($words_or_phrase_to_search_for).')');

进一步的测试是有序的,但到目前为止它似乎按预期工作。

于 2015-01-20T12:27:32.870 回答
-2

where 条件中的 $query 对我来说似乎很奇怪。

于 2014-05-16T22:23:20.753 回答