我需要在 Laravel 3.0 中为全文搜索编写一个流畅的查询。搜索查询是这样的
SELECT * FROM posts WHERE MATCH (tags) AGAINST ('Lorem Ipsum Dolor Sit Amet');
我一直在使用原始查询来执行此操作,但原始查询的结果无法分页。谁能告诉我为这个查询写一个流畅的查询的正确方法?
我需要在 Laravel 3.0 中为全文搜索编写一个流畅的查询。搜索查询是这样的
SELECT * FROM posts WHERE MATCH (tags) AGAINST ('Lorem Ipsum Dolor Sit Amet');
我一直在使用原始查询来执行此操作,但原始查询的结果无法分页。谁能告诉我为这个查询写一个流畅的查询的正确方法?
也许试试这个……???
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);
我只是把它从空中拉出来,现在无法测试......不在我的服务器上......
实际上,您不需要执行原始选择语句,只需在原始查询中编写 where() 语句即可。那么你为什么不尝试这样的事情呢,我的本地服务器目前有一些问题,所以我不能自己测试,但这应该可以。
// If you're using laravel models
Posts::where_raw(sprintf("MATCH (tags) AGAINST ('%s')", $search))->paginate(10);
where_raw 是 laravel 的未记录函数之一:D,在使用原始查询时也要记住,不执行转义,所以要小心。