目前无法使用Laravel查询构建器进行这样的查询(和绑定(bind)):
SELECT * FROM `posts` WHERE MATCH( `title`, `description` AGAINST( 'bar' IN BOOLEAN MODE)) ORDER BY (MATCH( 'title' AGAINST( 'bar' )) DESC;
这将根据相关性对结果进行排序,如果我们拥有(现在不知道!)orderByRaw,则上面的查询将是:
Post::whereRaw("MATCH( `title`, `description` AGAINST( ? IN BOOLEAN MODE))", array('bar'))->orderByRaw("(MATCH( 'title' AGAINST( ? )) DESC", array('bar'))->get();
我打开了这个问题,但没有解决:
https://github.com/laravel/framework/issues/2134
有什么建议吗?
最佳答案
使用Eloquent,您可以执行以下操作:
$match = "
match (
`title`,
`description`
) against (
?
IN BOOLEAN MODE
)";
$against = 'bar';
$sql->whereRaw($match, array($against));
$sql->orderByRaw($match . " DESC", array($against));
使用查询生成器也可以使用相同的功能,但是您需要做一些重写。
关于php - laravel orderByRaw()在查询生成器上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20065972/