我正在为我的 Symfony2 项目构建一个搜索功能,我为它编写了如下 SQL:
SELECT dlc.title, dlc.description, dlc.keywords
FROM ShoutMainBundle:Dlc dlc
WHERE MATCH (dlc.title, dlc.description, dlc.keywords) AGAINST (":keyword" IN BOOLEAN MODE)
AND dlc.type = (":audio")
ORDER BY dlc.date DESC
但是,当我在项目中运行它时,出现以下错误:
[Syntax Error] line 0, col 96: Error: Expected known function, got 'MATCH'
我可以使用替代方法代替 MATCH
吗?目前(只是为了我可以进行基本测试)我正在使用 LIKE,但如果使用多个词进行搜索,它就不太适用了。
编辑: 代码中是这样使用代码的:
$em = $this->getDoctrine()->getEntityManager();
$wckeyword = '%'.$skeyword.'%';
$dlcresult = $em->createQuery('
SELECT dlc.title, dlc.description, dlc.keywords
FROM ShoutMainBundle:Dlc dlc
WHERE MATCH (dlc.title, dlc.description, dlc.keywords) AGAINST (":keyword" IN BOOLEAN MODE)
AND dlc.type = (":audio")
ORDER BY dlc.date DESC'
)->setParameters(array('type' => $stype, 'keyword' => $wckeyword));
$dlcres = $dlcresult->getResult();
最佳答案
Doctrine 不支持开箱即用,是的。但您可以:
关于mysql - 如何在 Symfony2 数据库查询中使用 MATCH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8119499/