使用 MongoDB 和 Laravel 的文本搜索
Using text search with MongoDB and Laravel
我正在使用 jenssegers/laravel-mongodb 包来将 MongoDB 与 Laravel 一起使用:
我正在尝试使用以下命令通过 MongoDB 实现文本搜索:
db.place.find({$text:{$search:"hotel"}})
但我不知道如何将此查询转换为与上述包和 Laravel. 一起使用
嗯,真有趣,我刚找到答案。这是从文本搜索中获取结果的代码:
\DB::collection('place')->raw()->find(array('$text'=>array('$search'=>'hotel')))->getNext();
你可以使用whereRaw方法。
Place::whereRaw(['$text' => ['$search' => 'hotel']])->get();
您甚至可以使用 laravel query scope 来定义您可以在整个应用程序中轻松重复使用的通用约束集。
放置模型
public function scopeContains($query, $search)
{
return $query->whereRaw(['$text' => ['$search' => $search]]);
}
放置控制器
Place::contains('hotel')->get();
我正在使用 jenssegers/laravel-mongodb 包来将 MongoDB 与 Laravel 一起使用:
我正在尝试使用以下命令通过 MongoDB 实现文本搜索:
db.place.find({$text:{$search:"hotel"}})但我不知道如何将此查询转换为与上述包和 Laravel. 一起使用
嗯,真有趣,我刚找到答案。这是从文本搜索中获取结果的代码:
\DB::collection('place')->raw()->find(array('$text'=>array('$search'=>'hotel')))->getNext();
你可以使用whereRaw方法。
Place::whereRaw(['$text' => ['$search' => 'hotel']])->get();
您甚至可以使用 laravel query scope 来定义您可以在整个应用程序中轻松重复使用的通用约束集。
放置模型
public function scopeContains($query, $search)
{
return $query->whereRaw(['$text' => ['$search' => $search]]);
}
放置控制器
Place::contains('hotel')->get();