目前无法使用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/

10-09 22:31