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