我通过https://packagist.org/packages/babenkoivan/scout-elasticsearch-driver使用Laravel / Scout / Elasticsearch,我遇到了这种情况:
要搜索,我必须使用这样的模型:
$visits = Visit::search("canada")->with(['origin', 'profile', 'user'])->paginate(10);
效果很好。
但是,如果我想通过Origins对网格进行排序 - 对于我到目前为止阅读和尝试的所有内容 - 我不能使用$model->with(...)
方法。相反,我必须使用像
$visits = DB::table('visits')
->join('origins', 'origins.id', 'visits.origin_id')
->orderby($sort_column, $sort_az_za)
->paginate(10);
这就是问题:search()无法与DB::table('visits')
一起使用
语法和
Visit::search("canada")->with(....)...
方法不允许我按不在Visits表中的字段进行排序。
问题是:如何按我想要的任何字段搜索和排序结果?
我认为应该可以将Scout扩展到搜索DB :: table('TABLE')或尝试直接通过ES排序 - 尽管我希望将所有代码都绑定到“Laravel方式” 。
如果扩展DB :: table('TABLE')是一种方式,有人可以指出我从哪里开始?
除此之外,还有其他想法吗?