2

我需要在 Laravel 3.0 中为全文搜索编写一个流畅的查询。搜索查询是这样的

SELECT * FROM posts WHERE MATCH (tags) AGAINST ('Lorem Ipsum Dolor Sit Amet');

我一直在使用原始查询来执行此操作,但原始查询的结果无法分页。谁能告诉我为这个查询写一个流畅的查询的正确方法?

4

2 回答 2

2

也许试试这个……???

public static function find_tags($searchtags, $take = 20)
{
    $results = Posts::raw_where("match (`tags`) against (?)", array($searchtags))
        ->take($take)
        ->get();

    return $results;
}

要不就...

  $searchtags = "Lorem ipsum blah";
  $results = Posts::raw_where("match (`tags`) against (?)", array($searchtags))
        ->paginate(10);

我只是把它从空中拉出来,现在无法测试......不在我的服务器上......

于 2013-06-11T22:31:38.760 回答
0

实际上,您不需要执行原始选择语句,只需在原始查询中编写 where() 语句即可。那么你为什么不尝试这样的事情呢,我的本地服务器目前有一些问题,所以我不能自己测试,但这应该可以。

// If you're using laravel models 
Posts::where_raw(sprintf("MATCH (tags) AGAINST ('%s')", $search))->paginate(10);

where_raw 是 laravel 的未记录函数之一:D,在使用原始查询时也要记住,执行转义,所以要小心。

于 2013-06-11T20:29:13.723 回答