【发布时间】:2017-10-05 11:21:07
【问题描述】:
我正在构建一个小型搜索引擎来获取世界各地的多个旅程,这是我的旅程表的样子:
如您所见,department_checkpoint 和arrival_checkpoint 是链接在一起的,这是一个完整的旅程,所有这些目的地都属于同一个announce_id 2。我现在要做的是创建一个表格,您可以在其中插入您的出发点和到达点以及搜索引擎将返回包含这些目的地的announce_id。获取像巴黎到伦敦或维也纳到多伦多这样的并排位置很简单,但是如何进行交叉搜索以获取像巴黎 - 维也纳或巴黎 - 多伦多这样的旅程? (穿越目的地)。
我正在使用 Eloquent ORM,这就是我目前所拥有的:
public function search(Request $request) {
if ($request->isMethod('post')) {
$departure = $request->get('departure');
$arrival = $request->get('arrival');
$announceIds = DB::table('journeys')
->select(DB::raw('announce_id'))
->where('departure_checkpoint', $departure)
->where('arrival_checkpoint', $arrival)
->get();
foreach($announceIds as $value) {
$this->founds = DB::table('announcesForDelivery')
->select(DB::raw('*'))
->where('announce_id', $value->announce_id)
->get();
}
return response()->json($this->founds);
}
return false;
}
这仅适用于并排搜索,但不适用于交叉搜索。我想我将不得不使用announce_id 来获取任何旅程,但我不确定如何使用Eloquent ORM 来做到这一点,它会是一个子查询吗?
【问题讨论】:
标签: sql laravel orm eloquent search-engine